C# 一次从类访问多个表单控件

C# 一次从类访问多个表单控件,c#,C#,我最近在寻找一种方法,比如说,从课堂上访问我表格上的文本框 我找到了一种方法(例如在文本框中更改文本),如下所示: 班级: class MyClass { public void method(Object obj) { (obj as TextBox).Text = "a"; } } 我的两个问题: 这是正确的做法吗 我是否可以以某种方式一次访问多个文本框,而不将20个文本框作为参数传递给我的方法 谢谢。您只需传递表单的引用即可访问其所有控

我最近在寻找一种方法,比如说,从课堂上访问我表格上的文本框

我找到了一种方法(例如在文本框中更改文本),如下所示:

班级:

class MyClass
{
     public void method(Object obj)
     {
         (obj as TextBox).Text = "a";
     }
}
我的两个问题:

  • 这是正确的做法吗

  • 我是否可以以某种方式一次访问多个文本框,而不将20个文本框作为参数传递给我的方法


谢谢。

您只需传递
表单的引用即可访问其所有控件:

class MyClass
{
    public void method(Form1 objForm)
    {
        (objForm.Controls.Find("textBox1", true)[0] as TextBox).Text = "1";
        (objForm.Controls.Find("textBox2", true)[0] as TextBox).Text = "2";
        (objForm.Controls.Find("textBox3", true)[0] as TextBox).Text = "3";
    }
}
要使用此代码,只需传递表单的引用:

MyClass c1 = new Myclass();
c1.method(this);
说明:


该方法将引用原始
表单
的对象。然后它将在
表单的控件列表中搜索指定的控件,并选择数组的第一项。之后,它会将该项强制转换到
TextBox
(因为我们搜索的项的类型为
TextBox
),然后设置其属性值。

为什么要传递
Object
,而不是
TextBox
?我刚刚发现了这种方法,就像他们在指南中说的那样。我对编程有点陌生。我不完全确定你想做什么,但你可能会传递一个TextBoxes数组。我说我的objForm不包含textBox1的定义,没有扩展方法textBox1。如果TextBoxes位于不同的控件(如面板)中,它将不起作用。如果它们也都在不同的容器中呢?将
false
更改为
true
以修复此问题。观察结果非常好。我没想过。非常感谢。
MyClass c1 = new Myclass();
c1.method(this);