我正在开发一个Windows窗体项目。在我的表单中,我有一个datagrid,其列必须填入每一行。
我想获得类似于 MS Mangement Studio 的内容:如果当前行中的必填单元格未填充,则无法添加另一行。
我该怎么做?
答案 0 :(得分:3)
使用CellValidiating
事件检查列的值。
这样的事情:
const int MandatoryColumnIndex = 1;
public Form1()
{
InitializeComponent();
dataGridView1.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);
dataGridView1.RowValidating += new DataGridViewCellCancelEventHandler(dataGridView1_RowValidating);
}
private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].FormattedValue.ToString() == string.Empty)
{
e.Cancel = true;
dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].ErrorText = "Mandatory";
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].ErrorText = string.Empty;
}
}
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == MandatoryColumnIndex)
{
if (e.FormattedValue.ToString() == string.Empty)
{
dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = "Mandatory";
e.Cancel = true;
}
else
{
dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = string.Empty;
}
}
}