2013-07-10 20 views
0

內部表格我想添加txtbox,它應該接受輸入爲小數點後2位小數或無小數,如果用戶在db級別只輸入1,則將添加小數點,如果用戶輸入1.00更好。接受並驗證winforms中的十進制輸入

我是winforms的新手,我需要建議(步驟來完成)描述的情況和用戶輸入的驗證,只接受可能的數字。 (點)beetween數字。

我不需要沉重的做法,因爲我只有2種形式這麼簡單,具體的例子可以。

感謝

回答

1

你可以這樣做:

首先,你可以使用一個按鈕來驗證

private void btnValdiate_Click(object sender, EventArgs e) 
    {   
     decimal value; 

     if(Decimal.TryParse(textBox1.Text,out value)) 
     { 
      bool check = TwoDecimalPlaces(value); 
      if(check) 
       { 
       //do something 
       }else 
       { 
       //do something else 
       } 
     }else 
     { 
      // do something 
     } 
    } 
    private bool TwoDecimalPlaces(decimal dec) 
    { 
     decimal value = dec * 100; 
     return value == Math.Floor(value); 
    } 

其次,你可以通過使用TextChanged事件如做:

private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      decimal value; 

      if(Decimal.TryParse(textBox1.Text,out value)) 
      { 
       bool check = TwoDecimalPlaces(value); 
       if(check) 
        { 
        //do something 
        }else 
        { 
        //do something else 
        } 
      }else 
      { 
       // do something 
      } 
     } 
private bool TwoDecimalPlaces(decimal dec) 
     { 
      decimal value = dec * 100; 
      return value == Math.Floor(value); 
     } 

或者您也可以使用Regex看看:

http://regexlib.com/DisplayPatterns.aspx?cattabindex=2&categoryId=3&AspxAutoDetectCookieSupport=1

2

你應該看看FormatStrings

http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

如何與一個WinForms對象我會做,這是貫徹落實Validating事件,並使用此不僅爲輸入驗證,使某些用戶確實輸入了一個數字,但也重新格式化了他們的輸入。

private void textBox1_Validating (object Sender, CancelEventArgs e) 
{ 
    TextBox tx = Sender as TextBox; 
    double test; 
    if(!Double.TryParse(tx.Text, out test)) 
    { 
     /* do Failure things */ 
    } 
    else //this is the formatting line 
     tx.Text = test.ToString("#,##0.00"); 
} 
+0

在開始時使用'Sender作爲TextBox'模式的原因是您可以將其作爲通用的「十進制輸入驗證」方法。如果您碰巧在一個頁面上有5個文本框,都需要2位小數點數字驗證,則可以對所有這些方法重複使用相同的方法。 – Nevyn