我在主窗口变量中有
例子:
public partial class MainWindow : Window
{
internal int i;
public MainWindow()
{
InitializeComponent();
}
}
我想在子窗口中使用他,为此我在内部(同一个命名空间中的两个窗口)和子窗口仍然无法识别变量
我应该做什么?
您应该在类型的子窗口上创建一个公共属性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
任何更改(来自任一类)都将被任一引用“看到” .Value
Wrapper