当前位置:  开发笔记 > 编程语言 > 正文

显示ContextMenuStrip而不显示在任务栏中

如何解决《显示ContextMenuStrip而不显示在任务栏中》经验,为你挑选了2个好方法。

我发现当我为contextmenustrip(右键菜单)执行show()方法时,如果位置超出它所属的表单的位置,它也会显示在任务栏上.

有人在点击通知图标时尝试创建一个右键菜单,但由于菜单悬停在系统托盘上方而不是在窗体内(因为右键单击时窗体可以最小化),它会显示在任务栏上奇怪的原因

这是我目前的代码:

private: System::Void notifyIcon1_MouseClick(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {

if(e->Button == System::Windows::Forms::MouseButtons::Right) {

        this->sysTrayMenu->Show(Cursor->Position);

    }
}

我需要设置哪些其他选项,以便它不会在任务栏上显示空白进程.



1> Grokys..:

尝试将菜单分配给NotifyIcon的ContextMenuStrip属性,而不是在鼠标单击处理程序中显示它.



2> 小智..:

没有反思的最好和正确的方法是:

{
  UnsafeNativeMethods.SetForegroundWindow(new HandleRef(notifyIcon.ContextMenuStrip, notifyIcon.ContextMenuStrip.Handle));
  notifyIcon.ContextMenuStrip.Show(Cursor.Position);
}

其中UnsafeNativeMethods.SetForegroundWindow是:

public static class UnsafeNativeMethods
{
  [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
  public static extern bool SetForegroundWindow(HandleRef hWnd);
}

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有