调用一个从类中向Form添加控件的函数

时间:2012-02-12 21:22:19

标签: c# winforms class

我正在尝试在运行时向我的表单添加一些控件。我已经创建了一个函数来将控件添加到其编码区域内的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功能?

2 个答案:

答案 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");
}