[英]How to inherit from textbox and override keypress and keyup events?
I want to create a new class inherits from System.Windows.Forms.TextBox and assign keypress and keyup events to my control. 我想创建一个继承自System.Windows.Forms.TextBox的新类,并将keypress和keyup事件分配给我的控件。
Something like this : 像这样的东西:
class CurrencyTextbox : TextBox
{
private void CurrencyTextbox_KeyPress(object sender, KeyPressEventArgs e)
{
char ch = e.KeyChar;
if (!Char.IsDigit(ch) && ch != 8 && ch != 13)
{
e.Handled = true;
}
}
private void CurrencyTextbox_KeyUp(object sender, KeyEventArgs e)
{
if (!string.IsNullOrEmpty(CurrencyTextbox.Text))
{
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
Int64 valueBefore = Int64.Parse(CurrencyTextbox.Text, System.Globalization.NumberStyles.AllowThousands);
CurrencyTextbox.Text = String.Format(culture, "{0:N0}", valueBefore);
CurrencyTextbox.Select(CurrencyTextbox.Text.Length, 0);
}
}
}
You should override the protected virtual void OnKeyUp(KeyEventArgs e)
. 您应该重写
protected virtual void OnKeyUp(KeyEventArgs e)
。
Make sure to call base.OnKeyUp(e)
, or the event will not be raised. 确保调用
base.OnKeyUp(e)
,否则将不会引发该事件。
You can also add a regular event handler by writing KeyUp += CurrencyTextbox_KeyUp
您还可以通过编写
KeyUp += CurrencyTextbox_KeyUp
添加常规事件处理程序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.