在winforms中从其他forms访问公共财产
例如,我有Form1和Form2。 Form1拥有公共财产
public IMyCustomType selectedOption;
在Form1
有一个带有自定义对象列表的comboBox
。 我想当用户从该组合列表中选择选项到selectedOption时填充该值,例如
public IMyCustomType selectedOption; private void availableChoices_SelectedIndexChanged(object sender, EventArgs e) { selectedOption = (IMyCustomType)availableChoices.SelectedItem; }
在Form2
我想创建所选类型的新实例。 如何从form2
访问该selectedOption
属性并使用该值创建新实例?
如果从form1显示form2,您可以使用与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命名。
我知道的最佳实践是拥有一个控制程序forms的控制器类,然后可以在创建时将状态对象的引用传递给表单,并从该状态对象访问所需的任何属性。
(这也可以帮助你做一些巧妙的技巧,比如设置下一个表格从你当前的表单中加载;你的控制器类可以很容易地选择它然后调用等等。)
请提供更多详细信息,我将添加到我的答案中。 这取决于您如何创建Form2。 一种简单的方法是将IMyCustomType selectedOption放在form2的默认构造函数中,并通过Form2的构造函数将selectedOption从Form1传递给Form2。
combobox属性窗口将具有private的成员可见性。 将其设置为内部或公共。
上述就是C#学习教程:在winforms中从其他forms访问公共财产分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1031264.html