在不使用TopMost属性的情况下将模式对话框置于前面

时间:2014-11-26 16:04:26

标签: c# wpf winforms dialog modal-dialog

我使用ShowDialog(在System.Windows.Window上)向用户显示确认样式对话框窗口。我从系统托盘菜单选项执行此操作。我的问题是它的启动隐藏在windows下面。如果我将TopMost用于引起用户注意,那么使用TopMost在其他方面过于咄咄逼人。我不想强迫对话框始终在其他窗口的上面。

在调用ShowDialog之前,我尝试过各种方式,例如Focus,Activate,BringIntoView,试着让对话框引起用户注意,但无济于事。除了使用TopMost,我还有其他选择吗?我确实希望保持对话框的模态行为。

1 个答案:

答案 0 :(得分:0)

我遇到的问题的关键是设置window.Activate在调用window.ShowDialog之前没有效果(也没有焦点等)。相反,在调用ShowDialog之前,我将一个事件处理程序连接到ContentRendered事件并激活,然后它具有将窗口直接置于前面但仍允许用户将其他窗口拖到其上的所需效果。

window.ContentRendered += (sender, eventArgs) => window.Activate();
window.ShowDialog();