2013-03-13 112 views
3

我需要使用MaskedTextBox的基本功能。我可以使用5位数字掩码,但是我想改变的东西很少。眼下盒看起来像这样:Windows窗体 - 自定义MaskedTextBox

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_然后转换失败,工作正常,但首先我想让数字只能一个接一个地写出来。这也可能吗?

+1

一点点使用它:[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

回答

3

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

的上攻的NumericUpDown:

  • 没有下划线提示,试图摆脱
  • 将只接受数字输入
  • 所以没有必要尝试和转换价值。你将永远有一个整数
  • 设置最小和最大值属性为您提供了自动数据输入验证
  • 提供数据输入的多种模式:
    • 打字
    • 点击上/下按钮,用鼠标
    • 向上/向下键盘
  • 如果你愿意,你可以完全隐藏在上/下按钮:C# WinForms numericUpDown control (removing the spin box)
+0

+1另一个非常可行的方法! – 2013-03-13 15:51:00

+0

@MichaelPerrenoud:谢谢,+1你的好回答呢! – 2013-03-13 15:51:34

+0

嘿,非常感谢!当人们不是在这里砍掉对方的喉咙,而是在努力提供帮助时,情况会好得多。 – 2013-03-13 15:53:08

2

因此,要使_成为一个空间,您只需将掩码字符设置为单个空格即可。并且为了解决转换错误,只需将AllowPromptAsInput属性设置为false,以便用户实际上不会像您的示例那样结束。