.NET - 在表单上获取控件引用的正确方法

sha*_*kin 4 c# forms controls

我有一个C#类库,它使用一个表单(也在库中).假设我在这个表单上有一个名为editContents的编辑框.在常规表单应用程序中,我习惯于能够像这样获取编辑框:

class MainForm
{
     void Method()
     {
          this.editContents.Text = "Hi";
     }
}
Run Code Online (Sandbox Code Playgroud)

我想在常规表单应用程序中幕后发生了一些魔术,因为编辑框成员在MainForm类中是私有的,但我仍然可以像公共成员一样访问它.

但在我的类库中,我无法像这样访问编辑框.我实例化并显示"手动"形式,如下所示:

form = new MyForm();
form.Show();
Run Code Online (Sandbox Code Playgroud)

如何从此表单正确获取editContents控件?

Don*_*nut 14

您可以通过添加以下代码使其成为可公开访问的属性:

public String EditContents // for just the "Text" field
{
   get { return this.editContents.Text; }
   set { this.editContents.Text = value; }
}
Run Code Online (Sandbox Code Playgroud)

要么:

public TextBox EditContents // if you want to access all of the TextBox
{
   get { return this.editContents; }
   set { this.editContents = value; }
}
Run Code Online (Sandbox Code Playgroud)

  • 第一种方法更为可取,第二种方法是弱化封装,通常不应该只需要封装. (2认同)

Jul*_*ain 5

"神奇"是在*.Designer.cs文件中为您的文本框生成一个字段.默认情况下,此字段是私有的.如果要更改其可访问性,请在表单设计器中选择文本框,然后将"修饰符"属性更改为"公共".

但是,公开展示表单的所有控件可能不是一个好主意.您可以将其包裹在Donut建议的属性中,这样更清洁.