【问题标题】:Form does not show without focus没有焦点表格不显示
【发布时间】:2016-01-24 05:45:56
【问题描述】:

我正在使用 C# 表单在 Windows 中显示 toast 样式的通知(现有的气球通知有问题,无法根据我的需要进行自定义)。

我在轮询服务器进行更改时在子线程上调用以下代码。

Thread notificationThread = new Thread(() =>
{
    NotificationFrame notificationFrame = new NotificationFrame("text1", "text2");
    notificationFrame.Show();

    Application.Run();
});
notificationThread.Name = "Notification thread";
notificationThread.IsBackground = true;
notificationThread.Start();

但是,此表单并不总是显示。我发现它只有在 Visual Studio 有焦点时才有效。我尝试在没有附加调试器的情况下运行它,但这会导致表单永远不会显示。

例如:

  1. 我使用调试器运行并专注于 VS2015,框架显示。
  2. 我使用调试器运行并快速切换到另一个窗口,框架不显示。

【问题讨论】:

  • 可能是因为 notificationThread.IsBackground = true; 后台运行不显示。
  • 也许我错了,但我认为 IsBackground 仅表示线程会在所有其他主要线程退出时退出。在这种情况下,我确定其他线程正在运行。

标签: c# winforms


【解决方案1】:

可能是隐藏了,改用ShowDialouge()就好了

Thread notificationThread = new Thread(() =>
{
    NotificationFrame notificationFrame = new NotificationFrame("text1", "text2");
    notificationFrame.Visible = true;
    notificationFrame.ShowDialog();

    Application.Run();
});

【讨论】:

  • 还是不行。另外,我的窗口将TopMost 设置为true,所以它应该是可见的。
  • 你能确认它是不显示还是被隐藏了?
  • 我不确定。它不可见,这是肯定的。我可以执行代码来检查你是否有一些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 2020-10-30
  • 2020-04-25
相关资源
最近更新 更多