欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现托盘程序并禁止多个应用实例运行的方法

程序员文章站 2022-03-21 13:51:05
本文实例讲述了c#实现托盘程序并禁止多个应用实例运行的方法。分享给大家供大家参考,具体如下: 托盘程序的制作: 1.把notifyicon控件拉一个到窗体上,并设置no...

本文实例讲述了c#实现托盘程序并禁止多个应用实例运行的方法。分享给大家供大家参考,具体如下:

托盘程序的制作:

1.把notifyicon控件拉一个到窗体上,并设置notifyicon的icon(很重要!否则运行后看不到效果)

2.窗体关闭时,将程序最小化到系统托盘上

private void form1_formclosing(object sender, formclosingeventargs e)
{
  //messagebox.show("程序将最小化到系统托盘区");
  e.cancel = true; // 取消关闭窗体
  this.hide();
  this.showintaskbar = false;//取消窗体在任务栏的显示
  this.notifyicon1.visible = true;//显示托盘图标
}

3.放一个上下文菜单,添加几个基本项,"显示主窗体","退出" ,将这个菜单挂到notifyicon上

private void menushow_click(object sender, eventargs e)
{
  this.show();
  this.showintaskbar = true;
  this.notifyicon1.visible = false;
}
private void menuexit_click(object sender, eventargs e)
{
  this.dispose(true);
  application.exitthread();
}

4.左键单击托盘图标时,显示主窗体,右击时当然是弹出上面设置的菜单

private void notifyicon1_mouseclick(object sender, mouseeventargs e)
{
  if (e.button == mousebuttons.left)
  {
    this.show();
    this.showintaskbar = true;
    this.notifyicon1.visible = false;
  }
}

防止这个程序同时运行多个

using system;
using system.collections.generic;
using system.windows.forms;
using system.threading;
namespace lucenetest
{
  static class program
  {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [stathread]
    static void main()
    {
      bool bcreatednew;
      mutex m = new mutex(false, "product_index_cntvs", out bcreatednew);
      if (bcreatednew)
      {
        application.enablevisualstyles();
        application.setcompatibletextrenderingdefault(false);
        application.run(new form1());
      }
    }
  }
}

希望本文所述对大家c#程序设计有所帮助。