一、背景
做了個APP,通過向下位機發送串口數據,然后通過串口去控制多路光源,現在的問題來了,若是電腦強行關機,而APP又沒在電腦關機前做任何動作,導致電腦已經關機了,而下位機控制的燈源還在工作。所以需要C#在截獲到關機信息時發送串口數據通知下位機關閉燈源。
二、正文
在“Form1.cs[設計]”界面下,選中要截獲關機信息的窗體。(所寫的APP只有一個窗體,所以沒有父子窗體概念。)在右下角的屬性框點擊“事件”,並選中“FormClosing”,如下圖:
雙擊會在“Form1.cs”中生成如下代碼:
private void VOUTCTRL_FormClosing(object sender, FormClosingEventArgs e) { // 在該函數內做窗口關閉前要做的操作。 // 以下代碼為自行添加部分 switch (e.CloseReason) { case CloseReason.ApplicationExitCall: MessageBox.Show("Exit()方法被調用!"); break; case CloseReason.FormOwnerClosing: MessageBox.Show("所有者窗體正在關閉!"); break; case CloseReason.MdiFormClosing: MessageBox.Show("此多文檔界面 (MDI) 窗體的父窗體正在關閉!"); break; case CloseReason.None: MessageBox.Show("關閉原因未定義或者無法確定!"); break; case CloseReason.TaskManagerClosing: MessageBox.Show("任務管理器正在關閉應用程序!"); break; case CloseReason.UserClosing: e.Cancel = true; MessageBox.Show("用戶正在通過用戶界面 (UI) 關閉該窗體!"); break; case CloseReason.WindowsShutDown: MessageBox.Show("操作系統正在關閉所有應用程序以便准備關機!"); break; default: break; } }
該段代碼在出現的以上“7”種事件后就會被調用。
三、參考文獻
C#捕獲windows關機事件,在系統關機前做一些自己想做的事
http://blog.csdn.net/testcs_dn/article/details/42365381
至此,記錄完畢。
記錄時間:2016年11月17日
記錄地點:深圳WZ