【问题标题】:Firing individual events of dynamically created controls in windows application在 Windows 应用程序中触发动态创建的控件的单个事件
【发布时间】:2013-05-24 09:02:20
【问题描述】:

我创建了一个代码,用于在运行时在 Windows 应用程序中创建一组控件。 我正在尝试获取按钮的单个单击事件,但这适用于所有按钮。

我正在尝试的代码是

 public partial class Employee_PayHeads_add : Form
{


    private TextBox newTxtBox = new TextBox();
    private Button newBtnAdd = new Button();
    private ComboBox newCombohead = new ComboBox();

    private int txtBoxStartPosition = 150;
    private int btnAddStartPosition = 240;
    private int comboheadStartPosition = 10;


    private int txtBoxStartPositionV = 25;
    private int btnAddStartPositionV = 25;
    private int comboheadStartPositionV = 25;

    public Employee_PayHeads_add()
    {
        InitializeComponent();
    }



    private void button1_Click(object sender, EventArgs e)
    {

        TextBox newTxtBox = new TextBox();
        Button newBtnAdd = new Button();
        ComboBox newCombohead = new ComboBox();

        newBtnAdd.BackColor = Color.Gray;
        newBtnAdd.Text = "Remove";
        newBtnAdd.Location = new System.Drawing.Point(btnAddStartPosition, txtBoxStartPositionV);
        newBtnAdd.Size = new System.Drawing.Size(70, 25);

        newTxtBox.Text = "";
        newTxtBox.Location = new System.Drawing.Point(txtBoxStartPosition, btnAddStartPositionV);
        newTxtBox.Size = new System.Drawing.Size(70, 40);

        newCombohead.Location = new System.Drawing.Point(comboheadStartPosition, comboheadStartPositionV);

        panel1.Controls.Add(newBtnAdd);
        panel1.Controls.Add(newTxtBox);
        panel1.Controls.Add(newCombohead);


        txtBoxStartPositionV += 30;
        btnAddStartPositionV += 30;
        comboheadStartPositionV += 30;

        newBtnAdd.Click += new EventHandler(ButtonClick);


         }

    void ButtonClick(object sender, EventArgs e)
    {

        label1.Text = "Hello Gagan";
    }

我想获取单个按钮的点击事件,假设我必须在 Label1 上的按钮显示相应文本框中的文本。

提前致谢。

【问题讨论】:

  • 问题是你不能动态引发事件吗?
  • 你想为每个按钮点击事件都有一个方法吗?我真的不明白你
  • Label是不是放在panel1里?
  • 实际上我必须在单击旁边的按钮时将值发送到数据库中的文本框中。

标签: c# .net winforms linq


【解决方案1】:

我不知道你愿意做什么。不管怎样看上面的代码,你可能有很多串联的控件(按钮后跟文本框,然后是组合框)都通过 button1_Click() 添加到面板中。如果是这种情况,请遵循以下顺序:

  1. 从处理程序中,您将知道面板中按钮的索引。
  2. 下一个索引指的是 TextBox 控件。
  3. 获取那个文本框并设置文本。

    void bu_Click(object sender, EventArgs e)
    {
        Type type = panel1.Controls[(panel1.Controls.IndexOf(sender as Button)) + 1].GetType();
        if(type == typeof(TextBox))
        {
            TextBox tb = (TextBox) panel1.Controls[
                            (panel1.Controls.IndexOf(sender as Button)) + 1];
            tb.Text = "Hello Gagan";
        }
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多