当我按下windowlogs +D时,上下文菜单栏没有自动关闭

本文关键字:菜单栏 上下文 windowlogs | 更新日期: 2023-09-27 18:04:07

我有一个名为"cmsView"在我的申请中。当我右键单击鼠标按钮时,cmsView已经打开,然后单击应用程序中的某些地方cmsView被关闭。如果我打开cmsView并按下windowlogo +D(I。e,最大限度地减少应用程序),再次cmsView不关闭和打开状态,每当我单击应用程序中的一些并失去焦点时。

当我按下windowlogs +D时,上下文菜单栏没有自动关闭

这不是应用程序或ContextMenuStrip控件中的错误。如果有什么问题的话,那就是Windows弹出菜单控件的一个bug,而WinForms控件实际上是在模仿这个bug,这样它们就会像用户期望的那样运行。

您可以在一个简单的应用程序(如Notepad)中自己测试一下。打开一个新实例,右键单击文档区域,然后按Win+D。即使应用程序的窗口消失(最小化),上下文菜单仍将保持打开并在桌面上可见。

所以我不建议尝试在你的应用程序中"修复"这个问题。入乡随俗

如果你绝对尝试修复它,你可以尝试侦听最小化事件为您的窗体和手动指示上下文菜单关闭。

private const int WM_SYSCOMMAND = 0x0112; 
private const int SC_MINIMIZE = 0xf020; 
protected override void WndProc(ref Message m) 
{ 
    if (m.Msg == WM_SYSCOMMAND) 
    { 
        if (m.WParam.ToInt32() == SC_MINIMIZE) 
        { 
            // Close the context menu strip when the form is being minimized
            cmsView.Close();    
        } 
    } 
    base.WndProc(ref m); 
}