我正在尝试在运行时向我的表单添加一些控件。我已经创建了一个函数来将控件添加到其编码区域内的Form中。我必须从类中调用该函数,以便可以在许多其他形式中使用这些值。这是代码:
在课堂上:
public void AddControl(string ControlTxt)
{
Form1 frm1 = new Form1();
frm1.AddButton(ControlTxt);
}
在表格中:
public void AddButton(string TxtToDisplay)
{
Button btn = new Button();
btn.Size = new Size(50, 50);
btn.Location = new Point(10, yPos);
yPos = yPos + btn.Height + 10;
btn.Text = TxtToDisplay;
btn.Visible = true;
this.Controls.Add(btn);
}
private void button1_Click(object sender, EventArgs e)
{
Class1 cls1 = new Class1();
cls1.AddControl("Hello");
}
当我点击button1
时,代码无效,并且没有显示任何异常。
如何在课堂上调用表格的AddButton
功能?
答案 0 :(得分:2)
如果您的主表单是自定义Form类的新表单,则可以使用this.AddButton()。
现在您正在对表单进行新的初始化,但是您没有在任何地方展示它。
实际上,这也是您没有收到错误的原因。应用程序按编程方式工作,但您新创建的表单永远不会设置为窗口,或设置为可见。
答案 1 :(得分:1)
您每次点击都会创建一个新表单(而不是使用当前表单),我会这样做(尝试接近您的代码时):
public class SomeClass
{
public static void AddControl(Form form, string controlTxt)
{
form.AddButton(form, controlTxt);
}
public static void AddButton(string form, string TxtToDisplay)
{
Button btn = new Button();
btn.Size = new Size(50, 50);
btn.Location = new Point(10, yPos);
yPos = yPos + btn.Height + 10;
btn.Text = TxtToDisplay;
btn.Visible = true;
form.Controls.Add(btn);
}
}
private void button1_Click(object sender, EventArgs e)
{
SomeClass.AddControl(this, "Hello");
}