c# – 不能始终如一地将形式带到前面

我尝试了几件事,但没有一件能起作用……

我点击NotifyIcon时应该在所有Windows前面的Form.所以这是我尝试过的:

private void notifyIcon1_MouseDown(object sender,MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        this.TopMost = true;
        this.BringToFront();
        this.Focus();
        this.TopMost = false;
    }
}

然后我尝试使用SetForegroundWindow:

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32",CharSet = CharSet.Ansi,SetLastError = true,ExactSpelling = true)]
public static extern bool SetForegroundWindow(IntPtr hwnd);

通过增加

SetForegroundWindow(this.Handle);

在if块的末尾.

最后,我看到如果我在NotifyIcon上单击鼠标右键并且上下文菜单打开时不起作用,我可以左键单击NotifyIcon并将其带到前面.

我试图在开头添加代码

cmsnotifyIcon.Show();
        cmsnotifyIcon.Close();

因此它显示关闭notifyIcon上下文菜单,作为解决方法的可能想法,但它没有帮助.

关于如何做到这一点的任何想法,或解决这个问题?

解决方法

如果你在MouseUp上做了怎么办?

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...