יום חמישי, 17 בפברואר 2011

מניעת סגירת טופס בלחיצה על X

ישנם מקרים בהם רוצים שבלחיצה על X הסגירה של התוכנית
התוכנה לא תיסגר אלא תמזער למשל לשורת המשימות של ווינדוס.

לשם כך יש להוסיף את הקוד הבא לתוכנית:

bool formClose = false;
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            if (formClose == false)
            {
                //cancels the closing event
                e.Cancel = true;
                //hides the window
                this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
                this.Hide();
            }
        }

אפשר להבין שהקוד 'משכתב' - override את אירוע הסגירה של התוכנה, ובמקום לסגור אותו ממזער אותו.
בשביל מיזעור לשורת המשימות - http://snir.blogspot.com/2010/10/minimize-window-to-tray.html

את כל זה הקוד עושה בעזרת משתנה בוליאני (אמת-שקר) בשם formClose 
איתו אפשר לקבוע לפני הסגירה של התוכנית אם היא אכן תיסגר או לא.
למשל, אם נרצה ונוסיף כפתור שאכן סוגר את התוכנה, אז נצטרך לכתוב לו:
formClose = true;
this.Close();