C#从嵌套类添加文本框

C#从嵌套类添加文本框,c#,forms,textbox,C#,Forms,Textbox,我有一个表单,它在加载时实例化另一个类(boxMaker),然后创建另一个类(boxObj)。我希望boxObj能够生成一个文本框,并显示在我的表单上 2个问题: 除非我使用form.controls.add(textbox);-对吗? 为了实现这一点,我必须将原始表格依次传递给每个班级: 伪代码: new boxMaker(this) boxMaker创建者: public boxMaker (Form form) new boxObj(form) boxObj创建者: public bo

我有一个表单,它在加载时实例化另一个类(boxMaker),然后创建另一个类(boxObj)。我希望boxObj能够生成一个文本框,并显示在我的表单上

2个问题:

除非我使用form.controls.add(textbox);-对吗?

为了实现这一点,我必须将原始表格依次传递给每个班级: 伪代码:

new boxMaker(this)
boxMaker创建者:

public boxMaker (Form form)
new boxObj(form)
boxObj创建者:

public boxObj (Form form)
new textbox
form.controls.add(textbox)
必须将原始对象一直沿链传递下去,这感觉非常笨拙:


有更简洁的方法吗?

您可以让
BoxMaker
返回一个
文本框
,并让
表单
处理将其添加到
控件
列表中,而不是将原始
表单
四处传递:

public class BoxMaker
{
    public TextBox CreateTextBox()
    {
        TextBox textBox = new TextBox();
        // Do Stuff
        return textBox;
    }
}
并在
表单中使用它,如下所示:

public class Form1
{
    public void SomeEventHandler(object sender, EventArgs e)
    {
        BoxMaker maker = new BoxMaker;
        TextBox makerMadeTextBox = maker.CreateTextBox();
        this.Controls.Add(makerMadeTextBox);
    }
}

在主窗体中使用静态窗体对象,然后只使用该对象添加textbox1)Yes。2) 您还可以将form1.Controls设置为可访问的公共甚至全局(静态)属性。但是,是的,无论你是传递它还是以更直接的方式访问它,都需要某种参考资料……啊!这更有意义,我是向后做的,将表单沿着链传递,而不是让对象返回。谢谢