1

我只是想知道。如果我有两个表格..表格 1 和表格 2,您需要访问文本框、标签等..例如使其可见或更改其文本..

从 Form2 访问这些的最佳方式是什么?

在 Form 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;

我知道这可能是一个愚蠢的问题,但我还是编程新手,我想知道我能做这些事情的最佳方法。谢谢 :)

4

5 回答 5

2

在您的第二个场景中,您声明只读属性,而在第一种方法中,您通过public函数公开功能,IMO 是更清晰和更好的方法。

编辑:我在您的第一种方法中看到的一个问题是您无法阻止用户更改 Visible 以外的某些属性。用户(开发人员)也可能错误地设置了 TextBox 的 Text 属性。例如

form1.TextBox1.Text = "Some new text";

以上不是期望的行为。(您只想设置 Visible 属性)

于 2012-12-04T12:43:47.127 回答
2

我认为是程序员的偏好.. 我总是更喜欢方法 1,因为出错的空间更小,如果你想改变它在很多情况下的作用,那么它可以在一行代码中完成

于 2012-12-04T12:45:08.883 回答
2

选项 1 肯定更好,因为您只暴露了您想要暴露的部分。
您不仅减少了部分调用者的错误空间,而且还说明了方法的意图。

在选项 2 中,控件的所有方面都是可访问的,并且可以从外部代码更改,而不仅仅是Visible属性。

如果它更适合您的偏好,您可以创建一个属性:

public bool TextBox1Visible
{
    get { return TextBox1.Visible; }
    set { TextBox1.Visible = value; }
}
于 2012-12-04T12:48:22.057 回答
0

将数据模型用作单独的类。使用观察者/MVVM 模式在数据模型发生更改时获得通知。

于 2012-12-04T12:48:58.073 回答
0

我假设您在 Form2 中有一些动作触发了对 Form 1 的更改。鉴于您的选择,我会得到 1。另一个选择是考虑事件。Form1 订阅 Form2 上的事件。当它被触发时,您可以将任何您想要的内容传递给 Form1,并让它执行您想要的任何更新或更改。

于 2012-12-04T12:54:07.170 回答