方法一
定义一个方法
private void TextBoxDec_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
}
{
if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
}
然后在dataGridView的EditingControlShowing事件中
private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (this.dgvFenl.CurrentCell.ColumnIndex == 列索引)
{
e.Control.KeyPress += new KeyPressEventHandler(TextBox_KeyPress);
}
}
{
if (this.dgvFenl.CurrentCell.ColumnIndex == 列索引)
{
e.Control.KeyPress += new KeyPressEventHandler(TextBox_KeyPress);
}
}
方法二
在dataGridView的CellValidating事件中
private void dgvTix_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
dgvTix.Rows[e.RowIndex].ErrorText = "";
if (e.ColumnIndex == 3)
{
int newInteger = 0;
if (!int.TryParse(e.FormattedValue.ToString(), out newInteger) || newInteger < 0)
{
e.Cancel = true;
dgvTix.Rows[e.RowIndex].ErrorText = "题数格式错误,请重新输入。";
MessageBox.Show("题数格式错误,请重新输入。");
return;
}
}
else if (e.ColumnIndex == 4)
{
float newFloat = 0.00f;
if (!float.TryParse(e.FormattedValue.ToString(), out newFloat) || newFloat < 0.00)
{
e.Cancel = true;
dgvTix.Rows[e.RowIndex].ErrorText = "分数格式错误,请重新输入";
MessageBox.Show("分数格式错误,请重新输入。");
return;
}
}
}
{
dgvTix.Rows[e.RowIndex].ErrorText = "";
if (e.ColumnIndex == 3)
{
int newInteger = 0;
if (!int.TryParse(e.FormattedValue.ToString(), out newInteger) || newInteger < 0)
{
e.Cancel = true;
dgvTix.Rows[e.RowIndex].ErrorText = "题数格式错误,请重新输入。";
MessageBox.Show("题数格式错误,请重新输入。");
return;
}
}
else if (e.ColumnIndex == 4)
{
float newFloat = 0.00f;
if (!float.TryParse(e.FormattedValue.ToString(), out newFloat) || newFloat < 0.00)
{
e.Cancel = true;
dgvTix.Rows[e.RowIndex].ErrorText = "分数格式错误,请重新输入";
MessageBox.Show("分数格式错误,请重新输入。");
return;
}
}
}
本文介绍两种方法来限制DataGridView中特定列的数据输入格式,确保只能输入有效的整数或浮点数,通过事件处理实现数据验证。
1448





