2012-03-29 74 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处理程序中格式化列的数据。

相关问题