2012-03-29 68 views
0

朋友們,我在我的vs 2005 windows應用程序中使用了datagridview。在第3列和第4列的datagridview中,我想允許用戶輸入高達2的十進制值(如19.88或29765.01)。我怎樣才能將它限制在2個小數位?而且,如果用戶輸入「.1」,則應將其轉換爲「0.10」。任何建議都會有很大的幫助。我已經讓該欄只接受數字和單個小數(。)。如何在datagridview中只允許2個十進制值?

編輯:這是我的代碼。該程序流程不打算裏面,如果clause.I've給出的cell.It值7889.6655不應該讓我寫超出7889.66:

Regex reg = new Regex("^[0-9]+\\.[0-9]{1,2}$"); 
    Regex reg1 = new Regex("^[0-9]+\\.[0-9]{2}$"); 

    if(reg.IsMatch(dgView.Rows[e.RowIndex].Cells[dgViewColumn.TOTAL_TCS].Value.ToString())) 
    { 
     if (!reg1.IsMatch(dgView.Rows[e.RowIndex].Cells[dgViewColumn.TOTAL_TCS].Value.ToString())) 
     { 
      dgView.Rows[e.RowIndex].Cells[dgViewColumn.TOTAL_TCS].Value += "0"; 
     } 
    } 

回答

0

要將綁定列添加屬性DataFormatString =「{0: N3}」

如果您正在使用eval然後<%#的eval( 「NumFailedFiles」, 「{0:N3}」)%

+0

datagridview不是綁定類型。我通過代碼填充它。 – Sukanya 2012-03-30 04:53:55

0

您可以檢查類似下面的權利,

  Regex reg = new Regex("^[0-9]*(\\.[0-9]{1,2})?$"); 
      if (reg.IsMatch(dataGridView1.Rows[0].Cells[3].Value.ToString())) 
      { 

      } 

EDI T:

我測試了一個文本框的下面的代碼,它工作正常。將datagridview的行值替換爲以下代碼中的textbox.text。

 Regex reg = new Regex("^[0-9]+\\.[0-9]{1,2}$"); 
     Regex reg1 = new Regex("^[0-9]+\\.[0-9]{2}$"); 
     if (reg.IsMatch(textBox1.Text.ToString())) 
     { 
      if (!reg1.IsMatch(textBox1.Text)) 
      { 
       textBox1.Text += 0; 
      } 
     } 

EDIT2:

在其他情況下,你可以寫一些東西像下面

 Regex reg = new Regex("^[0-9]+\\.[0-9]{1,2}$"); 
     Regex reg1 = new Regex("^[0-9]+\\.[0-9]{2}$"); 
     if (reg.IsMatch(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString())) 
     { 
      if (!reg1.IsMatch(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString())) 
      { 
       dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value += "0"; 
      } 
     } 
     else 
     { 
      MessageBox.Show("Please, provide a valid value"); 
      dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value = ""; 
      return; 
     } 
+0

@Sukanya,請參閱我現在在編輯中輸入的代碼。 – 2012-03-30 06:17:00

+0

哦!它的一個小東西,把0作爲「0」確定。或者在你的問題中發佈你的代碼,我會看到它並更正 – 2012-03-30 06:54:00

+0

@Sukanya,它的工作很好na。 – 2012-03-30 07:08:32

0

有沒有辦法來限制用戶最多到小數點後兩位與標準的DataGridView列類型。要做到這一點,你需要創建自己的DataGridViewMaskedTextBoxColumn,它擴展了標準DataGridViewColumn並承載一個Winform MaskedTextBox作爲其編輯控件。

我已經成功地使用這些資源來完成:

DataGridViewColumn Hosting MaskedTextBox
DataGridView Custom Column Sample

但是,如果你只是想格式化列中的值,以顯示兩位小數,你可以設置你的DataGridViewTextBoxColumn「將「DataGridViewCellStyle.Format property」改爲「N2」。您還可以在DataGridView的CellFormatting event處理程序中格式化列的數據。

相關問題