我使用一个窗体来显示通知(它出现在屏幕的右下角),但是当我显示这个窗体时,它抢走了主窗体的焦点.有没有办法在不抢占焦点的情况下显示这个"通知"表单?

推荐答案

嗯,简单地覆盖Form.ShowWithout Activation还不够吗?

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

如果您也不希望用户单击此通知窗口,则可以覆盖CreateParams:

protected override CreateParams CreateParams
{
  get
  {
    CreateParams baseParams = base.CreateParams;

    const int WS_EX_NOACTIVATE = 0x08000000;
    const int WS_EX_TOOLWINDOW = 0x00000080;
    baseParams.ExStyle |= ( int )( WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW );

    return baseParams;
  }
}

.net相关问答推荐

EF Core IEntityTypeConfigurations:从数据库提取数据后相关对象为空

如何运行大量阻塞/同步 I/O 操作

Puppeteer LaunchAsync 在未打开浏览器的情况下挂起

如何使用 awslocal 通过 localstack 中的 cloudwatch events/eventbridge 触发 lambda

NET 6:控制器方法不可访问

C#字符串的GetHashCode()是如何实现的?

将 Moq 模拟对象传递给构造函数

SqlDateTime.MinValue != DateTime.MinValue,为什么?

在 .NET C# 中存储加密密钥的最佳方式

如何在 C# 中打开 Excel 文件?

String 是原始类型吗?

System.String.Copy 在 .NET 中有什么用?

在 .NET 中查找下一个 TCP 端口

有没有办法从方法返回匿名类型?

加载程序集、查找类和调用 Run() 方法的正确方法

dotnet 恢复警告 NU1701

如何在 C# 中以编程方式安装 Windows 服务?

在 .Net 中调用 Web 服务时绕过无效的 SSL 证书错误

如何获取当前的 ProcessID?

如何重新启动我的 C# WinForm 应用程序?