Secondwindow无法访问Mainwindow的文本框

时间:2019-09-12 08:17:55

标签: c# wpf

所以我有两个Windows。 第一个窗口使用文本框,组合框等存储所有数据。 在第二个窗口中,我希望用户输入一些信息,并基于该信息,我想在主窗口中更改某些内容。

我改变了 公共局部类Window2:Window 至 公共局部类Window2:MainWindow

但是它仍然不起作用。


public partial class MainWindow : Window
    {
        int Languagetoken = 1; 

        public MainWindow()
        {
            InitializeComponent();
            DateTextBox.Text = DateTime.Now.ToShortDateString(); 
        }

...



public partial class Window2 : Window
    {
        public Window2()
        {
            InitializeComponent();
        }
   {

不知道该怎么做。上面的代码不在同一xaml中,它们只是显示两者的初始化。

2 个答案:

答案 0 :(得分:0)

默认情况下,文本框和所有其他控件都由private成员变量表示,这些变量在表示您表单的类中表示,因此您将无法访问它。

要从外部访问它,可以在第一个窗口内添加属性...

public string DataText
{
    get
    {
        return DataTextBox.Text;
    }
    set
    {
        DataTextBox.Text = value;
    }
}

或者您可以将控件的访问级别更改为internalpublic,以便您可以通过引用窗口来访问它。

答案 1 :(得分:0)

有几种方法可以解决此问题,但在您的情况下,最简单的方法可能是在创建MaxNLocator时引用其In [36]: import numpy as np ...: import matplotlib.pyplot as plt In [37]: from matplotlib.ticker import MaxNLocator In [38]: fig, ax = plt.subplots(figsize=(10,4)) In [39]: ax.grid() In [40]: ax.xaxis.set_major_locator(MaxNLocator(min_n_ticks=15)) In [41]: x = np.linspace(0, 1, 51) In [42]: y = x*(1-x) In [43]: plt.plot(x, y) Out[43]: [<matplotlib.lines.Line2D at 0x7f9eab409e10>] 来注入它。

Window2

Window2:

MainWindow

然后您可以使用Window2 win = new Window2(this); 引用访问public partial class Window2 : Window { private readonly MainWindow _mainWindow; public Window2(MainWindow mainWindow) { _mainWindow = mainWindow; InitializeComponent(); } ... } MainWindow的任何内部成员或公共成员,例如:

Window2