如何对datagridview的数值、双精度值和空值进行验证
本文关键字:空值 验证 双精度 datagridview | 更新日期: 2023-09-27 18:11:31
如何在c# Windows应用程序中验证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.