Visual Studio 访问控件(文本框和组合框)添加到Windows泡沫运行时

d4so4syb  于 2023-04-07  发布在  Windows
关注(0)|答案(1)|浏览(114)

我添加用户控件到我的主窗口泡沫,用户控件包括TableLayoutpanel其中包括2组合框,1按钮和4文本框,如下图所示:

当我在运行时添加更多控件时,如何访问这些控件中的每一个,例如下图中的

在我的实践中,我知道访问在设计时创建的控件,但我不知道如何访问在运行时生成的控件。
我尝试了按钮点击事件,但它只显示单个按钮的点击事件,我如何访问运行时添加的多个按钮的点击事件。

g52tjvyc

g52tjvyc1#

更新:
我误解了你的运行时创建。
实际上,甚至多个用户控件都是在设计时创建的,它们都有自己的名称。
您可以使用相同的方法向它们添加事件。

private void button1_Click(object sender, EventArgs e)
{
    foreach (Control ctrl in this.userControl12.Controls)
    {
        if (ctrl.Name is "button1")
        {
            Button btn = (Button)ctrl;
            btn.Click += new EventHandler(Button1_Click);
        }
        else if (ctrl.Name is "button2")
        {
            Button btn = (Button)ctrl;
            btn.Click += new EventHandler(Button2_Click);
        }
    }
}
private void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Hello");
}
private void Button2_Click(object sender, EventArgs e)
{
    MessageBox.Show("World");
}

此示例演示如何将您自己的事件添加到用户控件中包含的多个按钮。
创建用户控件,如下所示:

创建一个winform项目如下:

using System;
using System.Drawing;
using System.Windows.Forms;
using WindowsFormsControlLibrary1;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            UserControl1 userControl = new UserControl1();
            foreach (Control ctrl in userControl.Controls)
            {
                if (ctrl.Text is "button1")
                {
                    Button btn = (Button)ctrl;
                    btn.Click += new EventHandler(Button1_Click);
                }
                else if (ctrl.Text is "button2")
                {
                    Button btn = (Button)ctrl;
                    btn.Click += new EventHandler(Button2_Click);
                }

            }
            userControl.Location = new Point(0, 0);
            // userControl.Size = new Size(200, 100);
            panel1.Controls.Add(userControl);

        }
        private void Button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello");
        }
        private void Button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("World");
        }
    }
}

以此为例,您可以向它们添加单独的事件,也可以添加统一的事件。
只需从相应的容器中找到它们。

相关问题