我只是想知道。如果我有两个表单..表单1和表单2,您需要访问文本框,标签等...例如,使其可见或更改其文本..
从Form2访问这些内容的最佳方法是什么?
在表单1中创建方法,如:
public void setTextBoxVisible(){
textBox1.Visible = true;
}
或在表单1中创建一个访问者,并从表单2更改可见性,如:
表格2:
public TextBox TextBox1 {
get { return textBox1; }
}
表格1:
Form1 form1 = new Form1();
form1.TextBox1.Visible = true;
我知道这可能是一个愚蠢的问题,但我仍然是编程的新手,我希望知道我能做这些事情的最好方法。谢谢:))
答案 0 :(得分:2)
在您的第二个场景中,您声明了只读属性,而在First方法中,您通过public
函数公开了该功能,IMO更清晰,更好的方法。
编辑: 我在您的第一种方法中看到的问题之一是您无法阻止用户更改除Visible之外的某些属性。用户(开发人员)也可能错误地设置TextBox的Text属性。例如
form1.TextBox1.Text = "Some new text";
以上不是理想的行为。 (您只想设置Visible属性)
答案 1 :(得分:2)
程序员偏好我认为..我总是更喜欢方法1因为错误的空间较小,如果你想在很多实例中改变它的作用,那么它在一行代码中完成
答案 2 :(得分:2)
选项1肯定更好,因为您只展示了要公开的部分 您不仅会在调用者的一部分上留下较少的错误空间,而且还表明了您的方法的意图。
在选项2中,控件的所有方面都是可访问的,可以从外部代码更改,而不仅仅是Visible
属性。
如果更符合您的偏好,您可以创建一个属性:
public bool TextBox1Visible
{
get { return TextBox1.Visible; }
set { TextBox1.Visible = value; }
}
答案 3 :(得分:0)
将数据模型用作单独的类。使用observer / MVVM模式在数据模型更改时收到通知。
答案 4 :(得分:0)
我假设你在Form2中有一些动作触发了对Form 1的更改。鉴于你的选择我会得到1.另一种选择是考虑事件。 Form1订阅Form2上的事件。当它被触发时,您可以将任何您想要的内容传递给Form1,并让它执行您想要的任何更新或更改。