קישור אירוע ב-C# - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

קישור אירוע ב-C#


efod26

Recommended Posts

יש איזה תוכנית GUI שאני עובד עליה, יש בה מערך של PictureBox שכל אחד מהם הם לצורך השאלה תמונה כלשהי,

ברגע הלחיצה על אחד מהתמונות נקרא בנאי של FORM אחר עם הפרמטרים (תכונות) של אותה תמונה.

הסתבכתי עם הקישור לאירועים ויצירת השיטה שתופעל בכל פעם שתלחץ תמונה אחרת.

אנא עזרתכם

קישור לתוכן
שתף באתרים אחרים

עבור כל PictureBox תרשום את הקוד הבא:

 pictureBox1.Click += new EventHandler(pictureBox1_Click);

ואז המתודה צריכה להיראות משהו כזה:


void pictureBox1_Click(object sender, EventArgs e)
{
FrmPicture form = new FrmPicture(pictureBox1.Image);
form.ShowDialog();
}

כמובן שאין מחלקה בשם FrmPicture, אלא עלייך ליצור את המחלקה הזאת

עריכה:

דרך אחרת לעשות זאת, היא להיכנס ל-Form Designer (הממשק GUI שבו ניתן לעצב את ה-Form)

ואז ללחוץ לחיצה כפולה על כל PictureBox ואז הוא כבר אוטומטית יוצר לך מתודה מתאימה עבור האירוע

ברירת המחדל של הפקד, במקרה הזה (הפקד PictureBox) האירוע יהיה Click ולכן המתודה תהיה pictureBox1_Click (בהנחה שלפקד קוראים pictureBox1 כמובן)

עריכה 2:

במקרה שהאירוע שאתה רוצה אינו אירוע ברירת המחדל של הפקד (למרות שהוא כן ב-90% מהמקרים)

אז ב-Form Designer תבחר את הפקד שמעניין אותך, ואז תחת ה-Properties שלו תבחר בטאב של ה-Events (נראה כמו ברק קטן)

ואז תמצא את האירוע שמעניין אותך ותעשה עליו לחיצה כפולה.

קישור לתוכן
שתף באתרים אחרים

אני יודע איך לקשר את האירוע לשיטה שאותה אני רוצה להפעיל, אני אחדד את השאלה. תחשוב על FORM שבו יש 10 לוגואים של . כל לחיצה על לוגו תעביר אותך למסך פרטים אשר יהיה בהתאם לפרטי אותו לוגו שעליו לחצת. עכשיו השיטה שנקראת בעת האירוע CLICK צריכה לדעת איזה מבין הלוגואים נלחץ ולהעביר לבנאי של טופס הפרטים את הפרמטרים המתאימים.

קישור לתוכן
שתף באתרים אחרים

בתוך המתודה של ה-event את מקבל הרי object sender שזה הקונטרול הספציפי שהעלה את ה-event. זה אומר שאתה יודע מי ה-PictureBox שלחצו עליו.

אתה יכול למשל לשים ב-Tag שלו את המידע שאתה צריך ולשלוח את זה לForm. רצוי שהמידע הזה יהיה בתוך מבנה או קלאס. צריך לעשות המרה בפנים אבל זה שטות, משהו כזה נגיד:


void pictureBox1_Click(object sender, EventArgs e)
{
DetailsClass details = (DetailsClass)((PictureBox)sender).Tag
FrmPicture form = new FrmPicture(details );
form.ShowDialog();
}

יותר אלגנטי יהיה לעשות קונטרול שיורש מ-pictureBox ומכיל שדות של המידע שאתה רוצה ופשוט לשלוח אותו ל-form.

יש כל מיני דרכים, זה תלוי בדיוק מה אתה צריך לעשות. אפשר גם לשמור Dictionary שהPictureBox הן המפתח שלו והערך זה המידע שאתה צריך, אבל זה לא ממש יעיל בד"כ אבל די נוח לעבודה.

שוב, זה תלוי באופי המידע שאתה צריך להעביר וגם בכמויות של התמונות שיש לך.

קישור לתוכן
שתף באתרים אחרים

אני יודע איך לקשר את האירוע לשיטה שאותה אני רוצה להפעיל, אני אחדד את השאלה. תחשוב על FORM שבו יש 10 לוגואים של . כל לחיצה על לוגו תעביר אותך למסך פרטים אשר יהיה בהתאם לפרטי אותו לוגו שעליו לחצת. עכשיו השיטה שנקראת בעת האירוע CLICK צריכה לדעת איזה מבין הלוגואים נלחץ ולהעביר לבנאי של טופס הפרטים את הפרמטרים המתאימים.

אם כל לוגו הוא בpicture box נפרד אז יש לך click event לpicture box.

אם זה הכל מחובר בתמונה אחת זה גם יחסית פשוט יש לך נגיד picturebox של 500x500 פיקסלים, כאשר כל לוגו הוא 50x50 ברגע שיש לחיצה אתה יכול לקבל את הקורדינאטות של הלחיצה, ואז לחשב על איזה לוגו כביכול לחצת.

אבל זה טיפה ערבי עדיף לעבוד עם gridview כלשהו כך שכל תא יאכלס לוגו...

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...