我尝试自定义MaskedTextBox,以便允许用户以特定格式输入文本:
__ __ __ __ __ __
其中每个下划线可以是有效的十六进制字符(AF和0-9)。
目前我已将掩码属性设置为:>AA AA AA AA AA AA
,这为我提供了正确的格式(由空格分隔的六组两个字符)并且我添加了KeyDown
事件:< / p>
private void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.D0:
case Keys.D1:
case Keys.D2:
case Keys.D3:
case Keys.D4:
case Keys.D5:
case Keys.D6:
case Keys.D7:
case Keys.D8:
case Keys.D9:
case Keys.NumPad0:
case Keys.NumPad1:
case Keys.NumPad2:
case Keys.NumPad3:
case Keys.NumPad4:
case Keys.NumPad5:
case Keys.NumPad6:
case Keys.NumPad7:
case Keys.NumPad8:
case Keys.NumPad9:
case Keys.A:
case Keys.B:
case Keys.C:
case Keys.D:
case Keys.E:
case Keys.F:
case Keys.Left://navigate
case Keys.Right://navigate
return;
default:
e.SuppressKeyPress = true;
break;
}
}
这会将字符限制为我想要的字符。
之后我开始搜索如何验证粘贴上的输入(与正常的MaskedTextBox相同 - 通过删除无效字符)。但是我开始想我在这里重新发明轮子。
也许有更好的方法来自定义MaskedTextBox?理想情况下,我希望将掩码设置为>HH HH HH HH HH HH
,这应该将字符限制为有效的十六进制(我知道当前实现不可能)
我可以在蒙版中使用自定义字符扩展MaskedTextBox吗?理想情况下,我希望将H
的支持添加为十六进制字符。