处理以编程方式创建的文本框按键

时间:2017-11-22 14:52:21

标签: c# textbox

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

3 个答案:

答案 0 :(得分:3)

您必须将事件处理程序添加到控件:

tb.KeyPress += tb_KeyPress;

通常情况下,当您双击设计师的TextBox时,visual studio会在幕后为您执行此操作。但是,由于这是以编程方式创建的,因此您必须自己完成这项工作。

答案 1 :(得分:1)

抱歉,评论的声誉不够(这显然不是答案,pelase不会将其标记为:)

  

控件在哪里,对不起,但我是c#

的新手

从您的代码段开始,您似乎是手动添加控件而不是从Designer中添加控件。如果您不熟悉C#,我建议您从Designer中添加它 - 它将更好地处理其他一些所需的属性。

例如,您还需要处理新创建的控件的位置。除了keypress处理程序的显式定义之外,还需要指定Left和Top属性。

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);

答案 2 :(得分:0)

在添加到视图中之前,您必须将自定义按键指定给文本框。

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;
   }
}