我們在程式執行時會先去執行Program.cs 裡面 Main這一段{}
去呼叫第一個啟動的form
這範例的啟動表單就叫BaseForm
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new BaseForm());
}
接著會執行表單內的這一段 public 加上表單名稱,從InitializeComponent();初始化動作新增我們要的事件 我們加入Form的FormClosing事件
這事件用於 視窗關閉時 觸發! 請看在BaseForm.Designer.cs檔案中的
private void InitializeComponent(){加入事件} 範例如下
private void InitializeComponent()
{
//在InitializeComponent()中還有許多要初始化的原件
//直接添入下面那一行即可
FormClosing += new System.Windows.Forms.FormClosingEventHandler
(this.Frm_Main_FormClosing);
}
再來解說 註冊FormClosing他的驅動原理
首先第一句FormClosing 他是一個發生於表單關閉之前會觸發的事件。
而需要注意的是他的語法中public event FormClosingEventHandler FormClosing
的FormClosingEventHandler剛好是我們接下來要解釋的委派
如果忘記委派請往前翻 趕快看看如何使用吧
委派到哪裡去呢? Forms.FormClosingEventHandler (this.Frm_Main_FormClosing);
委派到Form.cs檔案中的 Frm_Main_FormClosing程式區塊中
長這樣 如下
private void Frm_Main_FormClosing(object sender, FormClosingEventArgs e)
{
}
再回到委派FormClosingEventHandler中的語法來解析
public delegate void FormClosingEventHandler
(
Object sender,
FormClosingEventArgs e
)
當按下關閉時會觸發裡面有兩個參數
sender = {WindowsFormsApplication5.Form1, Text: Form1}
而 e = {System.Windows.Forms.FormClosingEventArgs}
看到FormClosingEventArgs 類別 順便一提 等等要解釋的屬性
FormClosingEventArgs.Cancel取得或設定值,這個值表示是否應該取消事件。
private void Frm_Main_FormClosing(object sender, FormClosingEventArgs e)
{
/*
if (e.CloseReason != CloseReason.WindowsShutDown)
{
if (MessageBox.Show("是否確定要關閉程式", "關閉程式", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
}
*/
if (MessageBox.Show("你剛按關閉對吧!", "關閉程式", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;//如果選擇no取消這事件 不關閉視窗
//e=FormClosingEventArgs.Cancel=true
}
//Environment.Exit(0);//強行關閉視窗
}
在這之後 還有許多Form的事件可以用
可以參考msdn中的
Windows Form 中事件的順序
沒有留言:
張貼留言