我有一个表单,它在加载时实例化另一个类(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)一直把原来的对象传递到整个链子上,这感觉真的很笨重:
有更整洁的方法吗?
发布于 2014-09-07 15:29:07
您可以使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);
}
}https://stackoverflow.com/questions/25711813
复制相似问题