【问题标题】:Windows Forms - customizing MaskedTextBoxWindows 窗体 - 自定义 MaskedTextBox
【发布时间】:2013-03-13 23:49:38
【问题描述】:

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

还有两件事我不喜欢。首先 - 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_ 的东西,否则它工作得很好,然后转换失败,但首先我希望能够一个接一个地写入数字。那么这也可能吗?

【问题讨论】:

  • 用谷歌搜索一下:SOMSDN

标签: c# winforms maskedtextbox


【解决方案1】:

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

NumericUpDown 的优势:

  • 没有下划线提示可以尝试摆脱
  • 它只接受数字输入
  • 因此无需尝试转换值。你总是有一个整数
  • 设置最小值和最大值属性可让您自动验证数据输入
  • 提供多种数据输入模式:
    • 打字
    • 用鼠标单击向上/向下按钮
    • 使用键盘向上/向下
  • 如果您愿意,可以完全隐藏上/下按钮:C# WinForms numericUpDown control (removing the spin box)

【讨论】:

  • @MichaelPerrenoud:谢谢,+1 你的回答也不错!
  • 嘿,非常感谢!当人们在这里不是为了割喉而只是想提供帮助时,情况会好得多。
  • 是的,你是对的,NumericUpDown 更能满足我的需求。我将使用它而不是MaskedTextBox。谢谢。
  • @MichaelPerrenoud:是的,急于争取代表往往会导致一些丑陋的行为,尤其是来自试图赚取更多收入的低代表偷窥。我真的很喜欢你的回答,因为我经常因为提供替代建议而被否决。 “但你没有回答这个问题!-1”通常是这样的。不太频繁,但非常短视。
【解决方案2】:

所以要让_ 成为一个空格,您只需要将掩码字符设置为一个空格。要解决转换错误,只需将AllowPromptAsInput 属性设置为false,这样用户实际上就不会得到像您的示例那样的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2011-09-03
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多