繁体   English   中英

显示表格但没有窃取焦点过一会儿就停止工作

[英]Show a Form without stealing focus stopped working after a while

我创建了自己的具有特殊功能的屏幕键盘。 我正在使用override方法ShowWithoutActivationCreateParams来防止我的窗体获得焦点(根据此stackoverflow问题 )。

    protected override bool ShowWithoutActivation
    {
        get { return true; }
    }
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams param = base.CreateParams;
            param.ExStyle |= 0x08000000;
            return param;
        }
    }

但是经过几次Hide()Show()我的表单又可以重新聚焦了。 要修复它,我需要重新启动应用程序,但这当然是较差的解决方案。 不重启就可以吗? 隐藏后不显示焦点就显示窗体无济于事。 我的应用程序可以再次集中。

我注意到,在大多数情况下,它是随机发生的,但是在其中一种情况下,总是这样:如果在右键单击托盘中的NotifyIcon后显示我的应用程序,然后从ContextMenuStrip中选择项目。 OnClick我只是简单地调用show函数。

您需要点击窗口吗? 如果没有,请尝试以下方法:

   protected override void WndProc(ref Message message)
   {
       switch (message.Msg)
       {
           case 0x84: // WM_NCHITTEST
               message.Result = (IntPtr)(-1); // HTTRANSPARENT;
               return;
       }

       base.WndProc(ref message);
       return;
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM