zoukankan      html  css  js  c++  java
  • 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();
    }

  • 相关阅读:
    清除浮动
    echarts设置小图标位置
    dedecms 顶级栏目内容显示
    dedecms 后台网站 标题设置
    mouseover,mouseenter,mouseout,mouseleave的区别
    texterea 水平居中
    echarts x轴文字换行显示
    echarts 拐点添加图片
    css首行缩进2个字符
    bootstrap 内边框样式
  • 原文地址:https://www.cnblogs.com/xugang/p/1006005.html
Copyright © 2011-2022 走看看