主窗口文本框从其他文件中的类访问
本文关键字:访问 文件 其他 窗口 文本 | 更新日期: 2023-09-27 17:56:18
所以我有一个主窗口,里面有很多其他窗口实例
MainWindow
{
Window1 win1= new Window1();
Window2 win2 = new Window2();
// ....... and so on
private keydownevent( ,key e)
{
if(e.keu==key.return)
{
//some logic here
if(some condition)
{
win1.show();
}
else if(some condition)
{
win2.show()
}
// ....
}
}
}
// and in window1 lets say
Window1
{
foo_class fcl = new foo_class();
click_button()
{
// do some logic
fc1.function in class;
}
}
现在文本框内容是一个条形码,我想在显示窗口 1 并在窗口 1 中完成click_button时清除主窗口中的文本框
///我试过了
MainWindow win= (MainWindow)Application.Current.MainWindow;
win.txtBlock1.Text = "";
放入foo_class和button_click,但它抛出错误 window1 无法投射到主窗口
我也试过
创建一个构造函数,该构造函数将 Keydown 函数中的参数作为文本框作为窗口 (texbox),但每次 TIM 都会创建一个新实例,但我只想在实例化 MainWindow 时创建的实例并继续使用该 window1 实例
请建议一些可以在主窗口中清除文本框的方法? 我应该把那个方法
创建 Window
s 时,您可以将Owner
设置为 this
。 即:
public class MainWindow
{
Window1 win1 = new Window1();
Window2 win2 = new Window2();
...
//in code, before call Show() on win1 or win2
//set win1/win2.Owner = this;
}
然后,当您清除父级时,只需调用 ((MainWindow)this.Owner).txtBlock1.Text = "";
即可获得对父级的引用。
这都是基于Window1
和Window2
实际上是Window
的子类的假设,或者你实际上打算将win1
和win2
声明为Window。
编辑:
如注释中所述,另一种方法是通过新构造函数向 win1
和 win2
的构造函数提供对MainWindow
实例的引用,如果它们是窗口的子类。
我还建议您在MainWindow
上创建一个名为 ClearText
的新方法,这样您就不必公开文本框名称。