一个notifyIcon和contextMenu关联
目的是实现最小化到系统托盘,然后左键单击托盘图标还原窗口,右键单击弹出contextMenu
但是在点击contextMenu上面菜单项的同时也会触发notifyIcon的click事件(窗口还原)
请问怎么解决这个问题?谢谢

解决方案 »

  1.   

    to 但是在点击contextMenu上面菜单项的同时也会触发notifyIcon的click事件(窗口还原)应该不会发生这种问题,因为click事件在点击contextMenu上面菜单项的时候,已经被处理了,不会再下发。
    你的程序可能是细节处理问题,最好能贴出代码。
      

  2.   

    加一个if语句在notifyIcon的click事件处理代码里过滤掉不就行了?
      

  3.   

    static void Main() 
    {
    bool createdNew;
    Mutex m = new Mutex(true ,Application.ProductName, out createdNew);
    if(createdNew)
    {
    Application.Run(new Form1());
    m.ReleaseMutex();
    }

    }
    //处理一个log文件
    private void button1_Click(object sender, System.EventArgs e)
    {
    try
    {
    //文件读写
    }
    catch(Exception e1)
    {
    MessageBox.Show(e1.Message,"Log");
    }
    } //contextMenu的“退出”菜单项
    private void menuItem1_Click(object sender, System.EventArgs e)
    {
    Application.Exit();
    }
    //contextMenu的“处理log”菜单项
    private void menuItem4_Click(object sender, System.EventArgs e)
    {
    button1_Click(this.button1, null);
    }

    private void Form1_SizeChanged(object sender, System.EventArgs e)
    {
    if (this.WindowState==FormWindowState.Minimized)
    {
    this.Hide();
    this.notifyIcon1.Visible=true;
    }
    }
    //单击notifyIcon
    private void notifyIcon1_Click(object sender, System.EventArgs e)
    {
    this.Visible = true;
    this.WindowState = FormWindowState.Normal;
    this.notifyIcon1.Visible = false;
    }
    //contextMenu的“还原”菜单项
    private void menuItem2_Click(object sender, System.EventArgs e)
    {
    this.Visible = true;
    this.WindowState = FormWindowState.Normal;
    this.notifyIcon1.Visible = false;
    }