如何在c#wpf中打开当前窗口时获得对上一个窗口的控制

本文关键字:窗口 上一个 控制 c#wpf | 更新日期: 2023-09-27 17:58:56

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

如何在不关闭window2的情况下将焦点/控制权转移到window1?我正在使用VS13开发c#.net wpf

在窗口1:中

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;
    }
}

如何在c#wpf中打开当前窗口时获得对上一个窗口的控制

您可以在构造window1时将其引用传递给window2

然后,从您的window2,您可以在window1上调用Activate方法,使其再次出现在前台:

window1.Activate();

请参阅此方法的MSDN文档。

编辑:由于您使用的是ShowDialog而不是Show(您在问题中一开始没有提到这一信息),所以情况有点不同:ShowDialog应该将窗口显示为模式对话框,因此一旦window2打开,您就不能将焦点放回window1,您必须先关闭window2

我不确定您想要实现什么行为,但您应该尝试使用Show而不是ShowDialog,然后使用如上所述的Activate方法。

更改此

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

更改Window2的构造函数添加window1 的引用

像这样的

公共分部类Window2:Window{静态字符串数据;静态窗口窗口1;public Window2(字符串a,Window父级){data=a;InitializeComponent();文本框。文本=数据;window1=父级;}}

并将该方法更改为该

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

现在从Window2调用这个

window1.Activate();

从任何方法