如何对datagridview的数值、双精度值和空值进行验证

本文关键字:空值 验证 双精度 datagridview | 更新日期: 2023-09-27 18:11:31

如何在c# Windows应用程序中验证datagridview的数值、双精度和空值。不应允许文本值进入数字或双精度单元格。怎么做呢?

如何对datagridview的数值、双精度值和空值进行验证

您可以像这样验证数据网格视图单元格…

private void dataGridView1_CellValidating(object sender,DataGridViewCellValidatingEventArgs e)
{
   // Validate the CompanyName entry by disallowing empty strings.
    if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName")
    {
        if (e.FormattedValue == null && String.IsNullOrEmpty(e.FormattedValue.ToString()))
        {
          dataGridView1.Rows[e.RowIndex].ErrorText =
            "Company Name must not be empty";
           e.Cancel = true;
        }
   }
}
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
     // Clear the row error in case the user presses ESC.   
      dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty;
}

这只验证空值,如果你想验证数字,你可以这样做…

如果您想限制除数字以外的任何内容,则需要处理DataGridView上的EditingControlShowing事件。可以这样做:

dataGridView.EditingControlShowing = new DataGridViewEditingControlShowingEventHandler (dataGridView_EditingControlShowing);

然后定义处理程序:

    void dataGridView_EditingControlShowing (object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        TextBox tx = e.Control as TextBox;
        tx.KeyPress += new KeyPressEventHandler (tx_KeyPress_int);
    }

然后,定义KeyPress处理程序,并且只处理数字字符:

    void tx_KeyPress_int (object sender, KeyPressEventArgs e)
    {
        if (!(char.IsNumber (e.KeyChar) || e.KeyChar == ''b'))
        {
            //is NOT number or is Backspace key
            e.Handled = true;
        }
    }

调整到适合你的确切需要(即只处理某一列的输入,等等)

如果你想在用户试图离开单元格时验证单元格值,你应该处理DataGridView。验证事件和处理单元格值。如果你想在用户输入时验证值,你可以处理KeyPress事件。

要验证数值,可以使用如下代码:

int number = 0;
if(!int.TryParce(cell.Value.ToString(), out number))
{ 
    //report about error input 
}

请阅读此链接。

http://msdn.microsoft.com/en-us/library/aa730881 (v = vs.80) . aspx

@@Edit,
如果您尝试使用自己的自定义数字控件,
1. 您不需要检查任何额外的验证。
2.