我需要使用 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_ 之类的东西,否则它工作正常,然后转换失败,但首先我想让一个接一个地写入数字成为可能。那么这也可能吗?

最佳答案

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

NumericUpDown 的优点:

  • 没有下划线提示可以尝试摆脱
  • 只接受数字输入
  • 所以没有必要尝试转换值。您将始终拥有一个整数
  • 设置最小值和最大值属性为您提供自动数据输入验证
  • 提供多种数据录入方式:
  • 打字
  • 用鼠标点击向上/向下按钮
  • 使用键盘向上/向下
  • 如果你愿意,你可以完全隐藏向上/向下按钮: C# WinForms numericUpDown control (removing the spin box)
  • 关于c# - Windows 窗体 - 自定义 MaskedTextBox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15389736/

    10-13 06:27