שימוש באובייקט כפתור במתודה שלא שייכת לאירוע שלו !
-
יום רביעי 04 אפריל 2012 12:45
שלום לכם :
אני חדש ומקווה שתוכלו לעזור לי..
אני יתאר את העניין שלי :
יש לי חלון עם 20 כפתורים , אני מקשר את כולם לאותו אירוע (click) , אני מקבל את אוביקט הכפתור ע"י :
;Button b = sender as Button ... (באירוע של כפתור מסויים לדגומא..) עכשיו אני יצרתי עוד כפתור "אישור" שלא מקושר לאירועים הנ"ל של הכפתורים ואני רוצה לפנות לאותו כפתור שנלחץ ב-אוביקט b שרשמתי למעלה, הבעיה מובנת שהכפתור אליו אני רוצה להתייחס לא מוכר במתודה של הכפתור האחר(כפתור האישור)... אז איך אני פונה אליו ?
shaul vachnun C# Developer
כל התגובות
-
יום רביעי 04 אפריל 2012 12:56
שלום שאול,
לכל שדה או מאפיין מכל סוג שהוא, ובכלל זה גם Button, יש Scope - התחום בו הוא מוגדר.
בהנחה שמדובר ב- WinForm - לכל כפתור יש בהכרח שם, שצריך להיות מוכר גם בקוד, כך תוכל לפנות אליו.
אם מדובר ב- WPF, אמנם לא חייב להיות שם לכל כפתור, אך אם עובדים רק עם ה- CodeBehind כדאי שתייצר שם לכפתור אליו אתה רוצה לפנות ע"י x:Name=YourName.
אסף.
MCPD
MCTS - TFS 2010
My Blog: http://benjaminet.wordpress.com -
יום רביעי 04 אפריל 2012 14:03
תודה אסף .. אך זה לא עונה לי בדיוק או שלא הבנתי נכון אני יתן לך את קטע הקוד ויסביר...
אני רוצה ליצור בצורה שיטתית שכל פעם שאני ילחץ על Buton מסויים הוא יזכור את השם שלו ואני יגש למאפיינים שלו(לדוגמא צבע),
הכוונה היא שכל הכפתורים משוייכים לאותו אירוע של הכפתור הראשון ולכולם יש את אותם המאפיינים.
אני רוצה פשוט לגשת מאירוע של Button שלא משוייך לאירוע הנ"ל לכפתור שנלחץ (אחד הכפתורים שמשוייכים לאותו אירוע ) ...
מקווה שמובן יותר עכשיו....
אם תוכל לתת לי קוד לדוגמא זה יהיה טוב....
תודה : שאול .
דוגמא :
האירוע המשותף לכל הכפתורים :
private void Machine601Button_Click(object sender, EventArgs e){Button b = sender as Button;if (sendMsg != 1){b.BackColor = System.Drawing.Color.Red;sendMsgPanel.Visible = true;}sendMsg = 1;}כפתור שבתוכו אני רוצה לגשת לכפתור שנלחץ המקושר לאירוע אחר :
private void cancelMsgMachinsPictureBox_Click(object sender, EventArgs e){
//b. -- אובייקט הכפתור המבוקש...
sendMsgPanel.Visible = false;sendMsg = 0;//b.BackColor = System.Drawing.Color.Green;}
shaul vachnun C# Developer
-
שבת 07 אפריל 2012 14:31
פשוט מאוד תגדיר משתנה ברמת ה טופס
למשל
Button activeButton;
באירוע של הלחיצה תשמור את הערך של ה BUTTON שנלחץ
Button b = sender as Button;
activeButton=b
לגשת ל ACTIVE BUTTON את יכול מכל מקום בטופס.
דרך אגב אני באופן עקרוני לא כותב קוד בפונקציה של האירוע אלא מפרק את ה EventArgs ואת ה SENDER
לפרמטרים ושולח לפונקציה
כך שאם ארצה אוכל להשתמש בפונקציה ממקום אחר
- נערך על-ידי NoundaDee שבת 07 אפריל 2012 14:32
- הוצע כתשובה על-ידי NoundaDee שבת 07 אפריל 2012 14:32
- סומן כתשובה על-ידי ipddModerator יום חמישי 12 אפריל 2012 10:28
-
יום ראשון 08 אפריל 2012 07:45
תודה רבה....
רק עכשיו ראיתי את ההודעה !
באמת פשוט אבל ככה זה שמתחילים להתעסק ....לא חושבים על הכל באותו רגע !
חג שמח לכל המשתמשים !!!
shaul vachnun C# Developer
- סומן כתשובה על-ידי shaul58 יום ראשון 08 אפריל 2012 07:45
- סימון כתשובה בוטל על-ידי ipddModerator יום חמישי 12 אפריל 2012 10:28