TopMost = true 的 WinForms 对话框

标签 winforms dialog

我在 WinForms 中实现了一个对话框,该对话框在屏幕右下角显示为通知对话框。问题是,无论何时显示,它都会获得焦点,并且只有当 TopMost = true 时才会发生这种情况。我该如何解决这个问题?

最佳答案

您需要继承 Form 并覆盖几个属性:

[Flags]
enum WS_EX
{
    TOPMOST = 0x00000008,
}

class TopMostForm : Form
{
    protected override CreateParams CreateParams
    {
        get
        {
            var baseParams = base.CreateParams;
            baseParams.ExStyle |= (int)WS_EX.TOPMOST;
            return baseParams;
        }
    }

    protected override bool ShowWithoutActivation
    {
        get { return true; }
    }
}

然后只需在此表单上简单地 Show() ,它将显示为最顶层且处于非事件状态。

关于TopMost = true 的 WinForms 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1727789/

相关文章:

java - 创建带有图像错误消息的 jDialog Swing

c# - 在从右到左的文本框中写入阿拉伯数字

c# - 如何更改我的 treeView 图标而不是 +,- 就像 c#.net win 窗体中的 Windows 资源管理器 TreeView

c# - Windows 消息 0x02c8 和 0x02c9 是什么?

java - 如何使 JavaFX 对话框在按下 OK 按钮后不自行关闭

java - 采用 Swing 对话框方法并将其转换为 SWT

jsf - 如何修复 p :dialog 的宽度和高度

android - 何时使用 Android PopupWindow vs Dialog

C# 在操作系统windows中设置环境变量(不执行)

每次更改标签页时都会调用 C# WinForm DrawItem