2014-04-03 199 views
1

我正在写使用C#。我使用下面的代码到我的文本转换为数字文本框在Win形式的桌面应用程序:避免重复的代码在C#

private void txtPrice_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     //if (!char.IsControl(e.KeyChar) 
     // && !char.IsDigit(e.KeyChar) 
     // && e.KeyChar != '.') 
     //   { 
     //   e.Handled = true; 
     //   } 
     if(!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 
     { 
      e.Handled = true; 
     }    
    } 

是蚂蚁设计模式或技术来存储上面的代码只有一次,并且不写它,每次在窗体中的每个文本框?

+2

如果您在一个表单上,只需将多个TextBox控件上的KeyPress事件设置为txtPrice_KeyPress。 – FodderZone

回答

1

创建一个名为数字文本框新组件,它继承TextBoxBase类。

您在此处编写的代码不起作用,因为有人可以复制和粘贴文本值。

您必须重写text_change事件。

1

如果你想定制,罗伯特的答案是最好的方法。另外,如果你没有意识到这一点,你可以使用它内置的NumericUpDown control

1

创建一个方法....例如

private void press(object sender, KeyPressEventArgs e) 
    { 
     //what ever code here,,,,,,i dont care 

    } 

//我假设你正在使用视觉studio.net

//亮点或选择文本框或文本框....

//然后去属性窗口,,,,,

//之后CLIC钾对闪电图标....或事件图标

//然后去你的KeyPress事件-------并单击下拉按钮//之后

添加需要的方法由控件实现......