Windows窗体 - 自定义MaskedTextBox
我需要使用MaskedTextBox
的基本功能。我可以使用5位数字掩码,但是我想改变的东西很少。眼下盒看起来像这样:Windows窗体 - 自定义MaskedTextBox
有两种东西,我不喜欢。首先 - Prompt char
这是低于_
。我删除了字段值以便将其留空(因为我希望它出现),但是这给出了一个错误 - The property value is invalid
。那么有没有办法摆脱这些下划线? - 其次所以我做一个皈依我用我的实体属性是整数类型之一这个值:
if (txtNumOfAreas.Text != "")
{
string temp = txtNumOfAreas.Text;
bool result = Int32.TryParse(temp, out convertValue);
if (result)
{
entity.AreasCnt = convertValue;
}
else
{
MessageBox.Show(Resources.ERROR_SAVE, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
else
{
entity.AreasCnt = null;
}
,除非有人决定做实验,并插入类似_1__5_
然后转换失败,工作正常,但首先我想让数字只能一个接一个地写出来。这也可能吗?
看起来您的MaskedEdit比处理您特定问题的范围更麻烦。更好的控制使用可能是NumericUpDown。
的上攻的NumericUpDown:
- 没有下划线提示,试图摆脱
- 将只接受数字输入
- 所以没有必要尝试和转换价值。你将永远有一个整数
- 设置最小和最大值属性为您提供了自动数据输入验证
- 提供数据输入的多种模式:
- 打字
- 点击上/下按钮,用鼠标
- 向上/向下键盘
- 如果你愿意,你可以完全隐藏在上/下按钮:C# WinForms numericUpDown control (removing the spin box)
+1另一个非常可行的方法! – 2013-03-13 15:51:00
@MichaelPerrenoud:谢谢,+1你的好回答呢! – 2013-03-13 15:51:34
嘿,非常感谢!当人们不是在这里砍掉对方的喉咙,而是在努力提供帮助时,情况会好得多。 – 2013-03-13 15:53:08
因此,要使_
成为一个空间,您只需将掩码字符设置为单个空格即可。并且为了解决转换错误,只需将AllowPromptAsInput
属性设置为false
,以便用户实际上不会像您的示例那样结束。
一点点使用它:[SO](http://stackoverflow.com/questions/1459797/hiding-the-promptchar-for-nets-maskedtextbox)和[MSDN](http://msdn.microsoft.com/zh-cn/ COM/EN-US /库/ system.windows.forms.maskedtextbox.mask(VS.90)的.aspx)。 – 2013-03-13 15:40:24