我有一个表单,在加载时实例化另一个类(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)
必须始终将原始对象一直传递到链条中,这真的很笨重:
有更简洁的方法吗?
答案 0 :(得分:1)
您可以让BoxMaker
返回TextBox
,让Form
句柄将其添加到Control
列表,而不是将原始Form
传递给public class BoxMaker
{
public TextBox CreateTextBox()
{
TextBox textBox = new TextBox();
// Do Stuff
return textBox;
}
}
:
Form
并在public class Form1
{
public void SomeEventHandler(object sender, EventArgs e)
{
BoxMaker maker = new BoxMaker;
TextBox makerMadeTextBox = maker.CreateTextBox();
this.Controls.Add(makerMadeTextBox);
}
}
中使用它,如此:
{{1}}