如何在c#wpf中打开当前窗口时获得对上一个窗口的控制
本文关键字:窗口 上一个 控制 c#wpf | 更新日期: 2023-09-27 17:58:56
我有两个窗口:window1
和window2
。当我单击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;
}
}
您可以在构造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();
从任何方法