【发布时间】:2010-11-23 01:48:31
【问题描述】:
我有一个从 winform 应用程序内部启动的 WPF 窗口。我只想允许一次打开该 WPF 窗口的一个实例,并且在用户尝试再次打开它时不警告该用户。
我在尝试搜索打开的 WPF 窗口时遇到问题,因为该窗口是从 winform 启动的。我通常做的是在搜索一个winform时,我搜索Application.Current.OpenForms中存在的那个winform的任何实例,当在WPF中我搜索Application.Current.Windows
我遇到的问题是System.Windows.Application.Current 在从 winform 内部启动时为空,因此我无法以这种方式搜索 WPF 窗口。有没有更好的方法来搜索打开的窗口的现有实例?
我的代码:
if (System.Windows.Application.Current != null)
{
foreach (System.Windows.Window win in System.Windows.Application.Current.Windows)
{
if (win is frmCaseWpf)
{
MessageBox.Show("You may have only one active case open at a time.", "Open Case",
MessageBoxButtons.OK,
MessageBoxIcon.Stop);
win.WindowState = System.Windows.WindowState.Normal;
win.Focus();
win.Activate();
return;
}
}
}
【问题讨论】: