2011-09-08 107 views
1

在我的c#程序中,我有一個非常簡單的代表數值的DevExpress編輯框。格式化表示數值的編輯框的最佳方式是什麼?

enter image description here

我想什麼做的就是以這樣的方式加入限制條件上的小數位數是:

  • 用戶不能輸入,粘貼或以任何其他方式輸入值包含多於預定義的小數位數。事實上,我只是希望編輯框在輸入3位小數後立即忽略用戶的輸入。
  • 如果程序員設置了編輯框的文本,則該值被舍入以滿足要求。

這樣做的最好方法是什麼?

詩:我認爲這將解決我的問題:

valueTextEdit.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; 
valueTextEdit.Properties.DisplayFormat.FormatString = "#.000;[#.000];0.000"; 

但它似乎並沒有做任何事情。我仍然可以輸入10位小數的值。同樣在代碼中,我可以將編輯框文本設置爲具有更多小數的值。

+0

嘗試將小數。 – Willem

+0

我該怎麼做? –

回答

0
+0

我不明白這將如何解決我的問題。 SpinEdit如何禁止用戶輸入超過預定義小數位數的值? –

+0

看,我在我的文章中提到的鏈接 –

+0

OK「編輯的值由RepositoryItemSpinEdit.MaxValue和RepositoryItemSpinEdit.MinValue性質的限制」,但假設你設置MAXVALUE至9,5和我輸入9,0001作爲價值。這低於最大值但仍不符合我的要求。 –

0

嘗試淨

這 MaskTextBox控制,您可以使用MaskedTextBox中在文本框中以數字格式輸入數據。

我希望這將幫助你

謝謝

+1

MaskTextBox很有趣,我不知道這一點。但是我不能使用非DevExpress控件,因爲我使用DevExpress驗證事件來驗證編輯框值(例如,用於驗證它是否位於特定範圍內)。 –

0

您可以從TextBox建立自己的類派生(繼承),然後覆蓋物業Text添加您的質量要求:

internal class SmartTextBox : TextBox 
{ 
    public SmartTextBox() 
    { 
    } 

    public override string Text 
    { 
     get 
     { 
      return base.Text; 
     } 
     set 
     { 
      // validate 'value' before setting it 
      base.Text = value; 
     } 
    } 
} 

在你建立你的項目後,你會發現你的新的Control與.NET控件調用SmartTextBox

編輯:但是,如果你只使用TextBox用於數字輸入,你爲什麼不使用NumericUpDown控制?它好得多,用戶不能輸入字符,甚至可以設置十進制數的精度。

+0

這個屬性是用每個擊鍵調用的嗎? –

+0

@Ba yab。在文本發生任何改變之後,這個「override」屬性會被調用,這樣你就可以隨時驗證輸入。 – 2011-09-08 14:03:04

+0

你說得對,我想我會嘗試這種方法。 –

3

您需要設置UseMaskAsDisplayFormat = true

看一看herehere

編輯:

很好的例子here

相關問題