4

我需要使用MaskedTextBox. 我可以使用 5 位掩码,但我想更改的东西很少。现在盒子是这样的:

蒙面文本框

有两件事我不喜欢。首先 -Prompt char这是 undersoce _。我删除了字段值以将其留空(因为我希望它出现)但这会产生错误 - 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_然后转换失败,否则它工作得很好,但首先我希望能够一个接一个地写入数字。那么这也可能吗?

4

2 回答 2

3

看起来你的 MaskedEdit 比处理特定范围的问题更麻烦。更好的控制可能是 NumericUpDown。

NumericUpDown 的优点:

  • 没有下划线提示可以尝试摆脱
  • 它只接受数字输入
  • 所以没有必要尝试转换值。你将永远有一个整数
  • 设置最小值和最大值属性可为您提供自动数据输入验证
  • 提供多种数据录入方式:
    • 打字
    • 用鼠标单击上/下按钮
    • 使用键盘向上/向下
  • 如果您愿意,可以完全隐藏向上/向下按钮:C# WinForms numericUpDown 控件(移除旋转框)
于 2013-03-13T15:45:34.603 回答
3

因此,要获得_一个空格,您只需将掩码字符设置为一个空格。并且要解决转换错误,只需将AllowPromptAsInput属性设置为,false以便用户实际上无法得到类似您的示例的内容。

于 2013-03-13T15:49:38.683 回答