主窗口文本框从其他文件中的类访问

本文关键字:访问 文件 其他 窗口 文本 | 更新日期: 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 = ""; 即可获得对父级的引用。

这都是基于Window1Window2实际上是Window的子类的假设,或者你实际上打算将win1win2声明为Window。

编辑:

如注释中所述,另一种方法是通过新构造函数向 win1win2 的构造函数提供对MainWindow实例的引用,如果它们是窗口的子类。

我还建议您在MainWindow上创建一个名为 ClearText 的新方法,这样您就不必公开文本框名称。