将对话框窗口置于前面

时间:2013-07-11 20:43:15

标签: c# wpf

我在点击按钮时显示一个窗口:

private void showWindow(object obj)
{
    var dialog = new AddItemView();
    dialog.Show();
}

如果再次单击该按钮,当此窗口仍处于打开状态时,如何将此窗口置于前面而不创建新窗口?

2 个答案:

答案 0 :(得分:2)

只需存储对话框对象并检查它是否已在showWindow中创建。

使用windows Closed事件清除对话框对象的引用。

AddItemView dialog;

private void showWindow(object obj)
{

    if ( dialog == null )
    {
       dialog = new AddItemView();
       dialog.Show();
       dialog.Owner = this;
       dialog.Closed += new EventHandler(AddItemView_Closed);
    }
    else
       dialog.Activate();
}

void AddItemView_Closed(object sender, EventArgs e)
    {

        dialog = null;
    }

答案 1 :(得分:0)

只是一个快速草图,但这应该做你想要的:

Window1 W = new Window1();

private void Button_Click(object sender, RoutedEventArgs e)
{
    if (W.IsVisible)
        W.Activate();
    else
        W.Show();
}

如果不这样做,也许我误解了你的问题。

编辑纠正错误。

在要实例化窗口的类构造函数中添加它。打开后窗口无法关闭。

        W.Closing += (s, e) => 
        {
            e.Cancel = true;
            ((Window)s).Hide();
        };