zoukankan      html  css  js  c++  java
  • <转载>C# 系统托盘NotifyIcon控件

        通知区域中的图标是一些进程的快捷方式,这些进程在计算机后台运行,如防病毒程序或音量控制。这些进程不会具有自己的用户界面。NotifyIcon 类提供了编写此功能的方法。Icon属性定义显示在通知区域中的图标。图标的弹出菜单由 ContextMenu属性确定。Text属性分配工具提示文本。要在通知区域中显示图标,必须将 Visible属性设置为 true

    具体使用方法:

    (1)新创建一个项目Form1,text属性修改为托盘演示;
    (2)向Form1窗口中添加一个NotifyIcon控件,修改其Name属性为 MyNotifyIcon。修改其Text属性为
       托盘演示,与应用程序的标题相同。这是因为NotifyIcon显示在系统托盘中时,Text属性中保存的
       文本为鼠标移动到程序图标上时的提示信息。修改Icon属性,为NotifyIcon添加一个图标;
    (3)在Form1的属性窗口上,把Icon属性也选择为与NotifyIcon相同的图标。修改ShowInTaskBar属性值为
        False,这样,应用程序在运行时就不会出现在任务栏中;
    (4)添加双击NotifyIcon时的事件处理代码(DoubleClick)
       private void MynotifyIcon_DoubleClick(object sender, System.EventArgs e)
       {
         if(this.Visible)
          {
            this.Hide();
          }else
               {
                 this.Show();
               }
          }
    (5)在使用NotifyIcon控件时,经常需要用到快捷菜单(ContextMenu控件)。使用方法为,向Form1中添加contextmenu控件,添加两个功能,一个为打开主界面,一个为退出。在NotifyIcon的ContextMenu属性中选择刚刚添加的ContextMenu控件。这样在图标上可以通过快捷菜单执行程序的各种功能。  
    在功能的单击事件中代码如下:

     private void 打开主界面ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                if (this.Visible)
                {
                    this.Hide();
                }
                else
                {
                    this.Show();
                }

            }

            private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                this.Close();
            }

    这篇文章继续介绍系统托盘NotifyIcon的使用,项目实现效果为:最小化窗体时,在系统托盘区域显示程序图标,并有气球提示,时间为30秒。效果如图,具体实现如下:

    1、创建一个新的项目From1;修改其Text属性为“系统托盘演示”,修改其ShowInTaskbar属性为False,为其添加一个图标。 

    2、添加一个NotifyIcon控件NotifyIcon1,修改其Text属性为“系统托盘演示”,为其添加一个图标,与From1图标相同。

    3、添加一个ContextMenuStrip控件ContextMenuStrip1,添加两个MenuItem,Text属性分别为打开,退出。 并在NotifyIcon控制中的ContextMenuStrip属性中选择刚刚创建的ContextMenuStrip1控件。

    4、下面将处理具体事件:

    (1)Form1_SizeChanged事件,效果为最小化窗体时,在系统托盘区域显示程序图标及气球提示:

        private void Form1_SizeChanged(object sender, EventArgs e)
            {
                if (WindowState == FormWindowState.Minimized)
                {
                    this.Hide();
                    this.notifyIcon1.Visible = true;
                    this.notifyIcon1.ShowBalloonTip(30, "注意", "大家好,这是一个事例", ToolTipIcon.Info);
                }
               
            }

    (2)NotifyIcon控件的doubleclick事件及两个menuitem的click事件:

     private void notifyIcon1_DoubleClick(object sender, EventArgs e)
            {
                this.Show();
                this.WindowState = FormWindowState.Normal;
            }

            private void toolStripMenuItem2_Click(object sender, EventArgs e)
            {
                this.Close();
            }

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

    这样就实现了上述功能,需要强调的是:代码this.notifyIcon1.ShowBalloonTip(30, "注意", "大家好,这是一个事例", ToolTipIcon.Info);为气球提示的实现,代码WindowState == FormWindowState.Minimized为窗体最小化的判断条件,代码this.WindowState = FormWindowState.Normal;为窗体还原的实现。

    右侧程序截图:

                     

    转自<星梦>

  • 相关阅读:
    Flutter DraggableScrollableSheet 可滚动对象的容器
    Flutter 避免阻塞ui线程
    Android Kotlin 数据驱动模板
    ng mock服务器数据
    rxjs 常用的subject
    Flutter 在同一页面显示List和Grid
    dart2native 使用Dart 在macOS,Windows或Linux上创建命令行工具
    Flutter 创建透明的路由页面
    ng 发布组件库
    js实现单张或多张图片持续无缝滚动
  • 原文地址:https://www.cnblogs.com/ChangTan/p/1772522.html
Copyright © 2011-2022 走看看