当用户需要通知一些工作要做时,我正在尝试显示窗口。每个人都认为工作正常,但我想展示绝对最高的形式。我设置了表单属性 TopMost = true 但它不起作用,窗口仍然显示在其他表单后面。
我发现 TopMost = true 不仅仅适用于 BackgroundWorker,当我使用 Timer 类时它工作正常。我想知道为什么?任何人都可以向我解释这个吗?
这是我想做的简单示例。
static void Main(string[] args)
{
try
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerAsync();
Application.Run(new Form());
}
catch (Exception exp)
{
Console.WriteLine(exp);
}
}
static void worker_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
System.Threading.Thread.Sleep(1000);
if (NeedNotify())
{
NotifyForm myNotifyForm = new NotifyForm();
myNotifyForm.TopMost = true;
myNotifyForm.ShowDialog(); // NotifyForm still show behind others windows
}
}
}
private static bool NeedNotify()
{
return true;
}
}