我正在尝试处理编程创建的文本框的按键事件,但是事件不起作用,并且显示该函数具有0个参考。
TextBox tb = new TextBox();
this.Controls.Add(tb);
和事件处理程序
private void tb_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) )
{
e.Handled = true;
}
}
您必须将事件处理程序添加到控件中:
tb.KeyPress += tb_KeyPress;
通常,当您双击设计师的TextBox
时,视觉工作室为您在场景后面做到这一点。但是,由于这是通过编程性创建的,因此您必须自己完成工作。
对不起,声誉不足(显然不是答案,pelase不要将其标记为一个:)
控件在哪里,对不起,但是在C#
中是新的
从您的代码片段中,您似乎是手动添加控件,而不是来自设计人员。如果您是C#的新手,我建议您从设计师中添加它 - 它将更好地处理其他需要的属性。
例如,您还需要处理新创建的控件的位置。除了对按键处理程序的明确定义,您还需要指定左和顶部属性。
TextBox tb = new TextBox();
tb.Left = 100; //distance from the left of your form
tb.Top = 100; //distance from the top of your form
tb.KeyPress += tb_KeyPress;
this.Controls.Add(tb);
在添加到视图之前,您必须将自定义按键分配给文本框。
TextBox tb = new TextBox();
tb.KeyPress += tb_KeyPress; //add this
this.Controls.Add(tb);
private void tb_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) )
{
e.Handled = true;
}
}