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