2014-04-16 91 views
1

在windows應用程序文本框中,用戶只能輸入十進制值,其中小數點前六位數字是允許的,小數點後兩位數字。總位數不能超過8)如何限制文本框輸入十進制值,其中允許小數點前六位數字和小數點後兩位數字

---用戶應該能夠使用刪除和返回按鈕。

示例: -

> Valid - 123456.22 , 12.22,.33,0.44,123.45(123456.22 - total digits 8) 
> Invalid - 1234567.22,123.222,-88.99,-888.999 

下面是我所用於限制正則表達式。

public bool IsDecimalLimitedtoTwoDigits(string inputvalue) 
     { 
      Regex isnumber = new Regex(@"^[\d]{1,6}([.]{1}[\d]{1,2})?$"); 
      return isnumber.IsMatch(inputvalue); 
     } 

上面的代碼工作正常,當我在Datagridview驗證事件作爲用戶離開單元格。

現在我對用於使用上述方法的Textbox事件感到困惑。

==>我想限制用戶輸入錯誤的數據。所以我不使用離開/驗證事件和上面的正則表達式不符合條件(123456.22 - 總數字8)。所以請幫助我正則表達式也是如此。

謝謝, Prathap。

回答

0

您可以使用Validating事件Control並使用ErrorProvider來顯示驗證錯誤。

例如,請參閱this文章,其中描述了在「數據格式通知」部分中使用它們的文章。

+0

但驗證時纔會觸發當焦點從控件移出。我使用了textbox驗證事件,它對正則表達式正常工作。我想在用戶輸入數據時進行驗證。 – user2859242

+0

哦,對,我現在明白了。你可以用'Mask'屬性來使用'MasktedTextBox'嗎?正則表達式不支持,但你需要使用這裏描述的格式http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask(v=vs.80).aspx –

+0

由於正則表達式可用,並在我的應用程序的大部分地方使用,我不想現在使用maskedtextbox。我只是想知道如何在這種情況下使用keypress/keydown事件。 – user2859242

0

你只需要調用你的方法

public bool IsDecimalLimitedtoTwoDigits(string inputvalue) 
     { 
      Regex isnumber = new Regex(@"^[\d]{1,6}([.]{1}[\d]{1,2})?$"); 
      return isnumber.IsMatch(inputvalue); 
     } 

Textbox Leave事件

,如果您有任何submit按鈕或save按鈕,確認按鈕單擊事件中的代碼

你可以使用MessageBox或使用0123來顯示錯誤消息控制

,如果你想進入的時候,你必須在TextChangedKeyPress事件添加代碼來驗證數據

在按鍵下壓事件

添加

if (! IsDecimalLimitedtoTwoDigits(textbox1.text) 
     { 
      e.Handled = true; 
     } 
+1

你可以幫助我在按鍵事件中的代碼。 – user2859242

+0

我已經試過這個了。在上面的案例中,文本將是空的,因爲當用戶第一次輸入數據時,只有在按鍵事件之後,文本框中才會有文本。 – user2859242

相關問題