Close form on load

Gilad Israeli

New member
Close form on load

אני מנסה לסגור טופס במהלך העלייה שלו, כלומר לקרוא לפונקציה Form.Close מתוך הפונקציה OnLoad. נקודה רשת מתעלם לחלוטין מן הקריאה, והטופס ממשיך לחיות. לא יפה. להלן דוגמית קוד:
private void OnLoad(object sender, System.EventArgs e) { this.Close(); }​
יש למישהו רעיון לפתרון אלגנטי? חשבתי על לזרוק חריגה (exception) ולתפוס אותו בקוד הקורא, אבל זה לא נכון מבחינה עקרונית, מכיוון שזהו סיום נורמלי של הטופס ולא תקלה.
 

גרי רשף

New member
כנראה שלא ניתן לסגור מה שלא נפתח..

יתכן ובזמן ה-Load הטופס עדיין אינו פתוח ולכן אינו יכול להיסגר. אם זו הסיבה- או שתבטל את הטעינה, או שתסגור את הטופס בארוע Open (או משהו כזה).
 

Gilad Israeli

New member
נכון, אבל ההצעה שלך לא מתאימה

לטופס יש שני אירועים שקשורים לפתיחה: פונקציה בונה (constructor), שתיקרא פרק זמן בלתי ידוע לפני הפתיחה הראשונה, ופונקציית OnLoad שנקראת בכל פעם שהטופס עומד להיטען. ביצוע Close באחת משתי השגרות הללו לא עושה כלום. לא ניתן גם לבטל את הטעינה מפני שאני לא מכיר פונקצייה שעושה זאת. מה שעשיתי בפועל היה לפתוח תהליכון (thread) חדש שקורא ל-Close של הטופס בעצמו ואז הוא מואיל בטובו להיסגר :) זה עדיין לא אלגנטי, אבל לפחות פותר לי את הבעייה. תודה בכל אופן!
 
למעלה