2013-03-13 111 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,以便用戶實際上不會像您的示例那樣結束。