0

我在主窗口变量中有

例子:

public partial class MainWindow : Window
{
   internal int i;
    public MainWindow()
    {
        InitializeComponent();
    }
}

我想在子窗口中使用他,为此我在内部(同一个命名空间中的两个窗口)和子窗口仍然无法识别变量

我应该做什么?

4

1 回答 1

0

您应该在类型的子窗口上创建一个公共属性int。创建子窗口时,然后根据父窗口中字段的值设置该属性。

看来您不仅希望能够读取子类中的变量,还希望能够修改它并将该更改反映在父表单中,这样会使答案复杂化。

我们需要从帮助类开始。因为我们感兴趣的数据是一个int(它是一个值类型),所以我们需要一个引用类型(即一个类)。

public class Wrapper<T>
{
    public T Value { get; set; }
}

所以我们首先在父表单中没有整数,而是这个类的实例:

public class Form1
{
    private Wrapper<int> data = new Wrapper<int>(); //TODO give better name
    //...
}

接下来,我们需要子窗体上的公共属性;而不是int我们将使用这个新类:

public class Form2
{
    public Wrapper<int> Data { get; set; }
    //...
}

现在,当我们创建子类时,我们将根据父类中的值设置属性:

public void someMethod()
{
    Form2 childForm = new Form2();
    childForm.Data = data;
    childForm.Show();
}

现在我们已经完成了所有这些,我们确保了父类和子类都引用了相同的实例,因此对实例属性的Wrapper任何更改(来自任一类)都将被任一引用“看到” .ValueWrapper

于 2012-09-11T15:38:24.630 回答