C# WinForm 动态创建的文本框事件(textChanged)未触发。

3

我正在开发Windows窗体应用程序,当用户点击“添加更多”按钮时,我会创建文本框,所以我想要获取每个文本框的文本更改事件的值。

这是我的代码:

 private void button1_Click(object sender, EventArgs e)
 {
   // I created text box wc
   TextBox wc = new TextBox();

   // now bind it with textchanged event
   wc.TextChanged += wc_TextChanged;
  }
    void wc_TextChanged(object sender, EventArgs e)
    {
        var box = (TextBox)sender;
        label1.Text = box.Text;

    }

我尝试过这个方法,但是在每个文本框的文本更改时都没有触发。谢谢。

5
如果您没有将它们添加到表格中,您甚至看不到它们。 - Steve
我已经将它们添加到表单上了,但没有提及代码。 - hasan farooq
尝试在你的 TextChanged 事件中放置一个 MessageBox.Show(),以确保它确实没有触发该方法,或者设置一个调试器断点并确保它正在被触发。 - Icemanind
3个回答

2

您还需要将其添加到您的表单中:

// I created text box wc
TextBox wc = new TextBox();

// now bind it with textchanged event
wc.TextChanged += wc_TextChanged;

this.Controls.Add(wc);

0

你应该添加事件和文本框

private TextBox wc;
Form()
{
     InitializeComponent();
     wc = new TextBox();
     wc.TextChanged += wc_TextChanged;
     wc.Visible = false;
     Controls.Add(wc);
}
private void button1_Click(object sender, EventArgs e)
{
     wc.Visible = true;
}

控件应该始终添加,您只需要控制控件的可见性!


@hasanfarooq,我已经进行了编辑检查,并解释了它。 - mybirthname

0

对我来说它运行良好

    private void button1_Click(object sender, EventArgs e)
    {
        TextBox wc = new TextBox();

        this.Controls.Add(wc);

        wc.TextChanged+=wc_TextChanged;

    }

    void wc_TextChanged(object sender, EventArgs e)
    {
        //var box = (TextBox)sender;
        MessageBox.Show("TEXT CHANGED");

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接