C#一行代碼實現(01)最小化到通知區域


C#一行代碼實現系列原創分享

覺得對您有幫助,幫忙推薦加關注

Nuget Package下載

https://www.nuget.org/packages/Sayaka.Common/

目錄

  • 此頁面會更新鏈接,保存此頁面即可

初步計划完成以下內容

  1. 窗口程序

    1. 最小化到通知區域
    2. 設置開機啟動
    3. 關閉窗口前彈出確認窗口
    4. 跨線程設置控件值,免去InvokeRequired通用方法1
    5. 跨線程設置控件值,免去InvokeRequired通用方法2
    6. 跨線程獲取控件值,結合BeginInvokeEndInvoke使用,以DataGridView為例
    7. 遍歷窗口所有控件,通過類和名稱模糊篩選
  2. 運行CMD程序

    1. 無窗口運行CMD程序
    2. 注冊OCX控件
  3. App.Config配置文件讀寫

    1. App.Config參數
    2. App.Config參數
    3. 綁定控件TextApp.Config參數
  4. 注冊表讀寫

    1. 讀注冊表
    2. 寫注冊表
  5. 文本文件讀寫

    1. 讀文本文件
    2. 寫文本文件
  6. Win32API封裝

    1. 通過ClassNameWindowText模糊查找所有頂級窗口
    2. 通過ClassNameWindowText模糊查找窗口內所有子控件
    3. 發送消息
    4. 模擬點擊其他程序窗口按鈕
    5. 在其他程序窗口上模擬按鍵
    6. 正常關閉其他窗口
    7. 強制關閉其他窗口
    8. 獲取窗口屬性
    9. 修改窗口屬性
    10. 獲取窗口位置和大小
    11. 修改窗口位置和大小
    12. 其他
  7. 先列到這里,未完待續……

主要功能

  • 實現Winform程序最小化后,隱藏任務欄顯示,在通知區域顯示。左鍵點擊通知區域圖標,可以彈出菜單,包含開機啟動退出程序,可以根據需求進行定制。

一行代碼

private void Form1_Load(object sender, EventArgs e)
{
    this.ExAddNotifyIcon();
}

代碼封裝

/// <summary>
/// 添加通知圖標,左鍵點擊切換窗口顯示,右鍵點擊彈出菜單
/// </summary>
/// <param name="form"></param>
/// <param name="tipText"></param>
/// <param name="timeout"></param>
/// <param name="tipIcon"></param>
/// <returns></returns>
public static NotifyIcon ExAddNotifyIcon(this Form form, string tipText = "程序最小化至后台運行,點擊圖標顯示程序", int timeout = 3000, ToolTipIcon tipIcon = ToolTipIcon.Info)
{
    NotifyIcon notifyIcon = new NotifyIcon();
    notifyIcon.Icon = form.Icon;
    notifyIcon.Visible = true;
    notifyIcon.Text = form.Text;
    notifyIcon.BalloonTipText = form.Text;
    notifyIcon.MouseClick += (sender, args) =>
    {
        if (args.Button == MouseButtons.Left)
        {
            if (!form.Visible)
            {
                form.Show();
                form.WindowState = FormWindowState.Normal;
                form.TopMost = true;
                form.TopMost = false;
            }
            else
            {
                form.WindowState = FormWindowState.Minimized;
                form.Hide();
            }
        }
    };
    notifyIcon.ContextMenu = new ContextMenu(new MenuItem[]
    {
        new MenuItem("開機啟動", (sender, args) => { ((MenuItem) sender).Checked = form.ExSwitchRunOnSystemStart(); })
        {
            Checked = form.ExIsRunOnSystemStart()
        },
        new MenuItem("退出程序", (sender, args) => { form.Close(); }),
    });
    form.SizeChanged += (sender, args) =>
    {
        if (form.WindowState == FormWindowState.Minimized)
        {
            form.Hide();
            notifyIcon.ShowBalloonTip(timeout, form.Text, tipText, tipIcon);
        }
    };
    form.FormClosed += (sender, args) => { notifyIcon.Dispose(); };
    return notifyIcon;
}

聲明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM