• [导入]C#实现WinForm窗口最小化到系统托盘


    C#编写最小化时隐藏为任务栏图标的 Window appllication.  

    1.设置WinForm窗体属性showinTask=false

    2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。

    3.添加窗体最小化事件(首先需要添加事件引用):

    this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);

    //上面一行是主窗体InitializeComponent()方法中需要添加的引用

    private void Form1_SizeChanged(object sender, EventArgs e)
    {
        if(this.WindowState == FormWindowState.Minimized)
        {
           this.Hide();
           this.notifyIcon1.Visible=true;
        }
    }

    4.添加点击图标事件(首先需要添加事件引用):

    private void notifyIcon1_Click(object sender, EventArgs e)
    {
        this.Visible = true;
        this.WindowState = FormWindowState.Normal;
        this.notifyIcon1.Visible = false;
    }


    5.可以给notifyIcon添加右键菜单:

    主窗体中拖入一个ContextMenu控件NicontextMenu,点中控件,在上下文菜单中添加菜单,notifyIcon1的ContextMenu行为中选中NicontextMenu 作为上下文菜单。

    this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
    this.NicontextMenu = new System.Windows.Forms.ContextMenu();
    this.menuItem_Hide = new System.Windows.Forms.MenuItem();
    this.menuItem_Show = new System.Windows.Forms.MenuItem();
    this.menuItem_Aubot = new System.Windows.Forms.MenuItem();
    this.menuItem_Exit = new System.Windows.Forms.MenuItem();  


    this.notifyIcon1.ContextMenu = this.NicontextMenu;
    this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject( "NotifyIcon.Icon ")));
    this.notifyIcon1.Text = " ";
    this.notifyIcon1.Visible = true;
    this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);
    this.notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);


    this.NicontextMenu.MenuItems.AddRange(

        new System.Windows.Forms.MenuItem[]
        {
              this.menuItem_Hide,
              this.menuItem_Show,
              this.menuItem_Aubot,
              this.menuItem_Exit
        }
    );

    //    
    //       menuItem_Hide
    //    
    this.menuItem_Hide.Index = 0;
    this.menuItem_Hide.Text = "隐藏 ";
    this.menuItem_Hide.Click += new System.EventHandler(this.menuItem_Hide_Click);
    //    
    //       menuItem_Show
    //    
    this.menuItem_Show.Index = 1;
    this.menuItem_Show.Text = "显示 ";
    this.menuItem_Show.Click += new System.EventHandler(this.menuItem_Show_Click);
    //    
    //       menuItem_Aubot
    //    
    this.menuItem_Aubot.Index = 2;
    this.menuItem_Aubot.Text = "关于 ";
    this.menuItem_Aubot.Click += new System.EventHandler(this.menuItem_Aubot_Click);
    //    
    //       menuItem_Exit
    //    
    this.menuItem_Exit.Index = 3;
    this.menuItem_Exit.Text = "退出 ";
    this.menuItem_Exit.Click += new System.EventHandler(this.menuItem_Exit_Click);

    protected  override  void  OnClosing(CancelEventArgs e)
    {
       this.ShowInTaskbar = false;
       this.WindowState = FormWindowState.Minimized;
       e.Cancel = true;    
    }
    protected  override  void  OnClosing(CancelEventArgs e)
    {
       //this.ShowInTaskbar = false;
       this.WindowState = FormWindowState.Minimized;
       e.Cancel = true;    
    }

    private  void  CloseCtiServer()
    {
       timer.Enabled = false;
       DJ160API.DisableCard();
       this.NotifyIcon.Visible = false;
       this.Close();
       this.Dispose();
       Application.Exit();
    }

    private  void  HideCtiServer()
    {
       this.Hide();
    }

    private  void  ShowCtiServer()
    {
       this.Show();
       this.WindowState = FormWindowState.Normal;
       this.Activate();

    }
    private  void  CtiManiForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        this.CloseCtiServer();
    }

    private  void  menuItem_Show_Click(object sender, System.EventArgs e)
    {
        this.ShowCtiServer();
    }

    private  void  menuItem_Aubot_Click(object sender, System.EventArgs e)
    {

    }

    private  void  menuItem_Exit_Click(object sender, System.EventArgs e)
    {
        this.CloseCtiServer();
    }

    private  void  menuItem_Hide_Click(object sender, System.EventArgs e)
    {
        this.HideCtiServer();
    }

    private  void  CtiManiForm_SizeChanged(object sender, System.EventArgs e)
    {
       if(this.WindowState == FormWindowState.Minimized)
       {
          this.HideCtiServer();
       }
    }

    private  void  notifyIcon1_DoubleClick(object sender,System.EventArgs e)
    {                                                                
        this.ShowCtiServer();
    }



    钢钢 2007-12-19 16:36 发表评论

    文章来源:http://www.cnblogs.com/xugang/archive/2007/12/19/1006005.html
  • 相关阅读:
    JAVA数据库建表工具类
    HTML加CSS3太极图demo
    MD5加密(JAVA&JS)
    Base64工具类(JAVA&JS)
    JS模拟圆周运动
    JAVA读取写入excle表兼容版
    Math.PI和Math.sin() 与 Math.cos()搭配使用详解
    MySQL8.0数据库连接问题
    echarts饼状图案例
    JS前端使用MD5加密
  • 原文地址:https://www.cnblogs.com/kingkoo/p/1036817.html
Copyright © 2020-2023  润新知