Page_Load

אז יש פה מתווך מיותר, לא ? ../images/Emo13.gif

אם הפונקציה OnLoad מקפיצה את הארוע Load, שמפעיל את הפונקציה שמקושרת אליו - בשם Page_Load (למשל), לא חבל על כל השרשרת ? אם אני פשוט אדרוס את OnLoad, ואעביר לתוכה את כל הקוד שיש לי ב Page_Load (ואמחק כמובן את Page_Load, ואת הקישור אליו מתוך הארוע Load) זה לא יעבוד אותו דבר ?
 

gilad g

New member
זה יעבוד בדיוק אותו הדבר ../images/Emo13.gif

האפשרות לדרוס את OnLoad מאפשרת ממך להימנע מהקפצת events מיותרים.
 

gilad g

New member
../images/Emo41.gif../images/Emo41.gif

אתה יכול לעשות טובה לסכם לי את הדיון הזה בהודעה אחת, בשביל ה-FAQ
 
אני אשמח לנסות.

אני רק לא בטוח שזה יהיה נטול שגיאות...
כאשר מעוניינים לכתוב קוד צד שרת שיתבצע בעת עליית המסך, בגדול ישנם 2 אופציות עקריות : אופציה ראשונה - שימוש בארוע Load של ה Page : -------------------------------------------- האובייקט Page, חושף את הארוע Load (ניתן לזהותו כארוע גם ע"י סימן הברק הצהוב שלידו, ב VS.NET). ע"מ לנצל את ה Event הנ"ל, עלינו להגדיר לו איזו פונקציה להריץ בעת עליית הארוע. את הקוד שאנו רוצים להריץ כותבים בתוך פונקציה רגילה, כאשר ברירת המחדל היא Page_Load, אך ניתן לכנותה בכל שם, ואת הארוע Load מגדירים כמצביע לפונקציה הזו (Delegate). ההגדרה מתבצעת ע"י שורת הפקודה :
this.Load += new System.EventHandler(this.Page_Load);​
כאשר סימן ה =+ מהווה את הגדרת ה Delegate. כעת, בעל פעם שהארוע Load של המסך יופעל, הפונקציה (Page_Load) המקושרת אליו (ע"י הפקודה הנ"ל) - תופעל. אופציה שניה- שימוש במתודה OnLoad --------------------------------- ככלל, מקובל לסמן מתודות המוקפצות כאשר מתרחש ארוע מסויים, ע"י קידומת On ולאחריו של הארוע. דוגמא נוספת (פרט לנושא המדובר) היא OnError למשל. כאשר הדף נטען, מופעלת אוטומטית, ע"י מנגנון פנימי של ASP.Net, הפונקציה OnLoad של המסך, שתפקידה הוא להקפיץ את הארוע Load. כל אשר נותר לנו לעשות, הוא לכתוב קוד בתוך הפונקציה הזו, ע"מ שירוץ בכל פעם שהמסך נטען. ע"מ לעשות זאת בצורה נכונה, נבצע override למתודה הזו, נכתוב בתוכה את הקוד, ובכך גם נמנע במהקפצת Events מיותרים.
 
אגב, כאשר אני מבצע את הדריסה :

protected override void OnLoad(System.EventArgs e) { base.OnLoad(e); //Your code here }​
היכן בדיוק מתבצע ביטול הקפצת הארוע Load ?
 

gilad g

New member
הוא לא מתבטל,

הוא עדיין יוקפץ, במידה ויש גורם אחר ש"נרשם" אליו.
 
יוקפץ...

אם אחד לא נרשם אליו, ולכן מבחינת קפיצתו - כלום לא יקרה הלאה... אגב, תאורטית אני יכול לכתוב חלק מהקוד בתוך OnLoad שדרסתי, וגם בתוך Page_Load שקושר (נניח) ל Load, נכון ? רק תאורטית
אגב, += שמגדיר DELEGATE, זו הכוונה "להרשם" ?
 

yuval k

New member
יאפ ../images/Emo13.gif

=+ בעצם "מוסיף" לרשימת ה-delegates שנקראים עבור האירוע הזה.
 
למעלה