调用从类向窗体添加控件的函数

本文关键字:控件 函数 添加 窗体 调用 | 更新日期: 2023-09-27 18:24:08

我正试图在运行时将一些控件添加到我的Form中。我已经创建了一个函数,将控件添加到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时,代码不起作用,也没有显示任何异常。如何从类中调用Form的AddButton函数?

调用从类向窗体添加控件的函数

如果您的主窗体是一个新的自定义窗体类,您可以使用这个。AddButton()。

现在你正在对一个Form进行新的初始化,但你没有在任何地方显示它。

事实上,这也是你没有收到错误的原因。应用程序按程序运行,但新创建的表单从未设置为窗口或设置为可见。

你每次点击都会创建一个新表单(而不是使用当前表单),我会这样做(同时尝试接近你的代码):

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