在winforms中从其他形式访问公共属性
本文关键字:访问 属性 winforms 其他 | 更新日期: 2023-09-27 18:16:46
例如,我有Form1和Form2。Form1有公共属性
public IMyCustomType selectedOption;
在Form1
中有comboBox
和自定义对象列表。我希望当用户从组合列表中选择option到selectedOption时填充该值,如
public IMyCustomType selectedOption;
private void availableChoices_SelectedIndexChanged(object sender, EventArgs e)
{
selectedOption = (IMyCustomType)availableChoices.SelectedItem;
}
在Form2
中,我想创建所选类型的新实例。如何从form2
访问到selectedOption
属性并使用该值来创建新实例?
如果form2显示自form1,您可以使用带有owner参数的重载:
form2.Show(form1);
然后在form2中,您只需从所有者属性中获取它:
((Form1)this.Owner).selectedOption
或者您可以在form2中创建一个公共方法,它将接受所选选项作为参数,并在显示form2之前调用它。
public class Form2 : Form {
private IMyCustomType parentSelectedOption;
...
public void InitParameters(IMyCustomType selectedOption)
{
parentSelectedOption = selectedOption;
}
}
public class Form1 : Form {
....
var form2 = new Form2();
form2.InitParameters(selectedOption);
form2.Show();
}
注意命名,公共属性(在你的例子中是字段)通常使用CamelCase命名。
我知道的最佳实践是有一个控制器类来控制程序的窗体,然后您可以在创建时将对状态对象的引用传递给窗体,并从该状态对象访问您需要的任何属性。
(这也可以帮助你做一些巧妙的技巧,比如设置从当前表单中加载下一个表单;它将很容易被你的控制器类拾取,然后调用etc.)
请提供更多细节,我会补充我的答案。这取决于你如何创建Form2。实现此目的的一个简单方法是将IMyCustomType selectedOption放入form2的默认构造函数中,并通过form2的构造函数将selectedOption从Form1传递到form2。
组合框属性窗口的成员可见性为private。设置为内部或公共