处理编程创建的文本框键



我正在尝试处理编程创建的文本框的按键事件,但是事件不起作用,并且显示该函数具有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;
   }
}

最新更新