2016-12-05 48 views
0

我做了它的整数值,通过这个代码,它的工作:DataGridView的细胞接受双重价值只有

private void ItemsDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
    { 

     DataGridViewTextBoxCell cell =ItemsDataGridView[2, e.RowIndex] as DataGridViewTextBoxCell; 

     if (cell != null) 
     { 
      if (e.ColumnIndex == 2) 
      { 
       char[] chars = e.FormattedValue.ToString().ToCharArray(); 

       foreach (char c in chars) 
       { 
        if (char.IsDigit(c) == false) 
        { 
         MessageBox.Show("You have to enter digits only"); 

         e.Cancel = true; 
         break; 
        } 
       } 
      } 

我不想再拍细胞只接受双重价值,以防止用户输入两个点“ “。以避免错误

回答

0

保持简单!

private void ItemsDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
{ 
    if (e.ColumnIndex == 2) 
    { 
     double result; 

     if (!double.TryParse(e.FormattedValue.ToString(), out result)) 
     { 
      e.Cancel = true; 
     } 
    } 
} 

此外,使用替代MessageBoxErrorText属性以指示用户错误。

private void ItemsDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
{ 
    if (e.ColumnIndex == 2) 
    { 
     double result; 

     if (!double.TryParse(e.FormattedValue.ToString(), out result)) 
     { 
      e.Cancel = true; 
      // Set error message 
      ItemsDataGridView.Rows[e.RowIndex].ErrorText = "You have to enter doubles only"; 
     } 
    } 
} 

private void ItemsDataGridView_CellValidated(object sender, DataGridViewCellEventArgs e) 
{ 
    // Clear error message 
    ItemsDataGridView.Rows[e.RowIndex].ErrorText = null; 
} 
+0

完美,谢谢 –