我的表单中有一个datagridview,每次用户向某个单元格输入值时,我都希望对行执行验证。
我尝试使用RowValidating事件,但在将e.Canel设置为true后出现了一些问题:
所以我想知道是否还有另一个更适合我需求的活动?或者有关如何解决上述问题的任何想法?
鉴于我有办法冻结行的编辑,我还想在相关行旁边显示一个错误气球工具提示,指出错误。 我想,为了做到这一点,我必须将dataGridView的ShowCellToolTips属性设置为false。但是,我的行可能包含大量数据,因此我希望在鼠标悬停在单元格上时显示工具提示。 我是否有办法在不将ShowCellToolTips设置为false的情况下显示气球工具提示?
最后一件事 - 我希望气球工具提示指向上方,就像在您尝试重命名文件时插入非法字符时显示的工具提示一样。似乎默认的气球工具提示指向下方,我该如何更改呢?
提前致谢!
答案 0 :(得分:2)
为DataGridView控件的CellValidating和CellEndEdit事件实现处理程序。
private void dataGridView1_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
// Validate the CompanyName entry by disallowing empty strings.
if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName")
{
if (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;
}
http://msdn.microsoft.com/en-us/library/ykdxa0bc(v=vs.80).aspx