从另一个窗体访问窗体中的内容的最佳方式是什么?C#

从另一个窗体访问窗体中的内容的最佳方式是什么?C#,c#,forms,C#,Forms,我只是想知道。如果我有两张表格。。表格1和表格2,您需要访问文本框、标签等。。例如,使其可见或更改其文本 从Form2访问这些文件的最佳方式是什么 在表1中创建一个方法,如: public void setTextBoxVisible(){ textBox1.Visible = true; } 或者在表单1中创建访问器,并从表单2中更改可见性,如: 表格2: public TextBox TextBox1 { get { return textBox1; } } 表格1:

我只是想知道。如果我有两张表格。。表格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;

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

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

编辑: 我在第一种方法中看到的一个问题是,您无法阻止用户更改某些属性,而不是Visible。用户(开发人员)也可能错误地设置文本框的文本属性。e、 g

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

上述行为并非理想行为。(您只想设置Visible属性)

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

编辑: 我在第一种方法中看到的一个问题是,您无法阻止用户更改某些属性,而不是Visible。用户(开发人员)也可能错误地设置文本框的文本属性。e、 g

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

上述行为并非理想行为。(您只想设置Visible属性)

我认为程序员更喜欢。。我总是更喜欢方法1,因为它的出错空间更小,如果你想在很多情况下改变它的功能,那么它只需要一行代码就可以完成。。我总是更喜欢方法1,因为它的错误空间更小,如果你想在很多情况下改变它的功能,那么它在一行代码中就完成了。选项1肯定更好,因为你只公开你想公开的部分。
这不仅减少了调用方出错的空间,而且说明了方法的意图

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

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

public bool TextBox1Visible
{
    get { return TextBox1.Visible; }
    set { TextBox1.Visible = value; }
}

选项1肯定更好,因为您只露出要露出的零件。
这不仅减少了调用方出错的空间,而且说明了方法的意图

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

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

public bool TextBox1Visible
{
    get { return TextBox1.Visible; }
    set { TextBox1.Visible = value; }
}

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

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

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

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

谢谢你的回答!我也这么想,但不确定是否建议使用访问器!不客气,我发现您的第一种方法存在的一个问题是,您无法阻止用户更改某些属性,而不是Visible。谢谢您的回答!我也这么想,但不确定是否建议使用访问器!不客气,我发现第一种方法的一个问题是,你不能阻止用户更改某些属性,而不是Visible。哦,我不知道这是可能的!多谢你,我。。这样你也只会暴露出可见性+1,我正要键入一个与我的答案类似的扩展名,刚刚看到了你的:)没错,你让
Form1
负责它自己的UI,这是最好的。哦,我不知道这是可能的!多谢你,我。。这样你也只会暴露出可见性+1,我正要键入一个与我的答案类似的扩展名,刚刚看到了你的:)正是,你让
Form1
负责它自己的UI,这是最好的。