【发布时间】:2023-03-30 00:24:01
【问题描述】:
我有一个问题,我创建了一个从 TextBox 继承的自定义控件,我需要覆盖 Text 属性和 OnKeyPress 或 OnKeyUp 事件。
- 文本属性被覆盖以显示与文本框实际值不同的值(用于单位转换)
- 我目前尝试添加的 OnKeyPress/OnKeyUp 仅允许输入数值。
当 KeyPress 事件被触发时,被更新的文本是 base.Text 而不是我的覆盖...关于我如何克服这个问题的任何想法?
public override string Text
{
get
{
return base.Text;
}
set
{
displayValue = parse;
base.Text = this.ContainsFocus ? displayValue.ToString() : displayValue.ToString("N3");
}
}
protected override void OnKeyUp(KeyEventArgs e)
{
e.Handled = true;
if ((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) ||
(e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9) ||
e.KeyCode == Keys.Decimal)
{
e.Handled = false;
}
//Code to only accept numerical buttons
base.OnKeyUp(e);
}
【问题讨论】:
-
你设置 e.Handled = true;在 OnKeyUp 中?
-
我当时什么也没设置,里面唯一的代码是
e.KeyCode >= Keys.D0等,编辑:这里显示的base.OnKeyUp(e) -
@AndreyVoloshin - 我已经更新了我的示例以包含我完整的 onkeyup
标签: c# winforms textbox overriding