如何在c#wpf中打开当前窗口时控制前一个窗口

时间:2014-04-18 07:15:41

标签: c# .net wpf visual-studio-2013

我有两个窗口:window1window2。当我点击window1中的按钮时,会显示window2

如何在不关闭window1的情况下将焦点/控制权移至window2?我正在使用VS 13

处理c#.net wpf

在Window1中:

private void go_Click(object sender, RoutedEventArgs e)
{
    Window2 r = new Window2(s1);
    r.ShowDialog();
}

在Window2中:

public partial class Window2 : Window
{
    static string data;

    public Window2(String a)
    {
        data=a;
        InitializeComponent();
        TextBox.Text = data;
    }
}

2 个答案:

答案 0 :(得分:0)

您可以在构建时将window1的引用传递给window2

然后,从您的window2,您可以在Activate上调用window1方法,使其再次显示前景:

window1.Activate();

请参阅此方法的MSDN documentation

编辑:由于您使用ShowDialog代替Show(您在问题中没有提及此信息),事情就是有点不同:ShowDialog应该将窗口显示为modal dialog,因此当<{1}}打开时, 无法将焦点重新提交给window1,必须先关闭window2

我不确定您希望实现的行为,但您应该尝试使用window2代替Show,然后使用ShowDialog方法如上所述。

答案 1 :(得分:0)

更改此

private void go_Click(object sender, RoutedEventArgs e)
{
    Window2 r = new Window2(s1);
    r.ShowDialog();
}

更改Window2添加引用window1

的构造函数

像这样的东西

public partial class Window2:Window {     静态字符串数据;     静态窗口窗口1;     public Window2(String a,Window parent)     {         数据= A;         的InitializeComponent();         TextBox.Text = data;         window1 = parent;     } }

并将该方法更改为此

private void go_Click(object sender, RoutedEventArgs e)
{
    Window2 r = new Window2(s1, this);
    r.Show();
}

现在从Window2调用此

window1.Activate();

来自任何方法