我有一个DataGridView
控件,我想限制用户只为特定列下的单元格输入数值。如何在DataGridView
单元格中完成此类验证?
我可以创建一个简单的文本框,但如何验证DataGridView
单元格呢?
答案 0 :(得分:1)
您可以设置列将保留的数据类型,如以下代码段所示:
var columnSpec = new DataColumn();
columnSpec.DataType = <your type>
// Other initialisation
dataTable.Columns.Add(columnSpec);
dataGridView.DataSource = dataTable;
如果您直接使用DataGridView
,则DataGridViewColumn
类具有以下属性:
ValueType - 获取或设置列单元格中值的数据类型。
如果您使用此类创建列而不是更专业的类DataGridViewCheckBoxColumn
等,这可能是您想要的。
答案 1 :(得分:1)
使用cellValidating
事件:
Grid.CellValidating += new DataGridViewCellValidatingEventHandler(Grid_CellValidating);
Grid_CellValidating(object sender, args)
{
XXXX
}
答案 2 :(得分:1)
示例:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.KeyPress -= new KeyPressEventHandler(Column1_KeyPress);
if (dataGridView1.CurrentCell.ColumnIndex == 0) //Desired Column
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{
tb.KeyPress += new KeyPressEventHandler(Column1_KeyPress);
}
}
}
private void Column1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}