功能說明 : 避免程式被不小心關閉(按右上角的[X]會縮小, 不會關閉), 不要佔用下方工具列, 縮小到系統匣, 縮小時右下角出現提示訊息.

其他功能說明 : 複製指定檔案, 指定來源及目的路徑, 會遞迴往下尋找資料夾, 目的路徑自動複製來源資料夾的結構.

 

config : 指定檔案, 指定來源及目的路徑.

config1.png

執行畫面

run0.png

按[X]縮小到系統匣.

run1.png

要關閉程式需在系統匣圖示按右鍵, 點[Exit]離開.

run2.png

 

1. 先拉Layout

Layout.png

NotifyIcon : notifyIcon1 系統匣圖示

    *Text一定要設定, 否則縮小到系統匣會看不到. 指定系統匣用的選單.

    notifyIcon1-1.png

ContextMenuStrip : contextMenuStrip1 系統匣選單

    contextMenuStrip1.png

TextBox : textBox1 用來顯示訊息

    textBox1.png

BackgroundWorker : backgroundWorker1 使用背景作業複製檔案, 避免視窗凍結

    *設定 : 可以即時回報訊息, 可以取消背景作業.

    backgroundWorker1-1.png

Timer : timer1 計時器, 才能每隔一段時間執行檔案複製

    timer1-1.png

 

2. 用到的事件

NotifyIcon : notifyIcon1 系統匣圖示

    *單擊 跟 雙擊 圖示, 都可開啟畫面.

    notifyIcon1-2.png

    notifyIcon1-3.png

ToolStripMenuItem : exitToolStripMenuItem 系統匣選單項目

    *因為按[X]不能關閉程式, 所以系統匣提供選單[Exit]讓使用者關閉程式.

    exitToolStripMenuItem3.png

    exitToolStripMenuItem4.png

BackgroundWorker : backgroundWorker1 背景作業

    *指定各個背景作業事件, 因為要能夠回報訊息, 所以有宣告一個全域變數msg存訊息.

    *DoWork裡面不能變動到外部元件(例如寫 TextBox.Text="xxx" 這樣是不行的).

    backgroundWorker1-2.png

    backgroundWorker1-3.png

    backgroundWorker1-4.png

    backgroundWorker1-5.png

Timer : timer1 計時器

    timer1-2.png

    timer1-3.png

Form : 

    *攔截關閉事件, 判斷是要關閉還是要最小化到系統匣.

    *這裡是用 this.WindowState != FormWindowState.Minimized 來判斷. 當視窗不是最小化的時候, 就取消關閉Form事件, 并顯示系統匣圖示.

    Form.png

    FormClosing.png

Others :

    宣告一個全域變數msg存訊息.

    Start.png

    ShowForm.png

    GetFilePathList1.png

    CreatePath1.png

    todo1.png

    todo2.png

 


arrow
arrow
    文章標籤
    C# backgroundworker timer
    全站熱搜

    伊 發表在 痞客邦 留言(0) 人氣()