Tom*_*ies 16 wpf modal-dialog messagebox .net-4.0
在我的WPF应用程序中,我有时会出现问题System.Windows.MessageBox.当它最初显示时,它会显示在我的主应用程序窗口的顶部,如我所愿.有没有办法可以强迫它始终保持在主窗口的顶部?我遇到的问题是,当MessageBox显示a时,用户可以点击主应用程序窗口并将其置于前面,这意味着MessageBox隐藏在视图之外.在这种情况下,用户可能没有意识到它在那里,或者忘了它,对他们来说,主应用程序似乎已经冻结了.
我已经阅读了很多有关此问题的帖子,但没有人为我解决了这个问题.
我应该补充说,提出的线程MessageBox可能不是UI线程.谢谢汤姆
Ric*_*bob 48
使用MessageBox.Show窗口"所有者"的版本并传递您的窗口.
MessageBox.Show(Application.Current.MainWindow, "Im always on top - of the main window");
Run Code Online (Sandbox Code Playgroud)
如果您可能不在UI线程上尝试:
string msg="Hello!";
if (Application.Current.Dispatcher.CheckAccess()) {
MessageBox.Show(Application.Current.MainWindow, msg);
}
else {
Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(()=>{
MessageBox.Show(Application.Current.MainWindow, msg);
}));
}
Run Code Online (Sandbox Code Playgroud)
您可以:
1.Invoke阻止您的线程,直到MessageBox被解雇或
2. BeginInvoke在这种情况下,您的线程代码将继续执行,但UI线程将阻止,MessageBox直到它被解雇).
| 归档时间: |
|
| 查看次数: |
31408 次 |
| 最近记录: |