c# – 如何捕获DataGridView验证在可编辑单元格中写入值时出错?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何捕获DataGridView验证在可编辑单元格中写入值时出错?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2288字,纯文字阅读大概需要4分钟。
内容图文
![c# – 如何捕获DataGridView验证在可编辑单元格中写入值时出错?](/upload/InfoBanner/zyjiaocheng/827/04615f6d31194e1a81ee34483f5df8f4.jpg)
我已经看到了很多涉及数据绑定的解决方案,但我没有数据源.在这种情况下,组合单元格仅适用于1行(其他行没有DataGridViewComboBoxCell).
我像这样设置DataGridViewComboCell:
DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();
cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
cell.Items.AddRange(items.ToArray()); // items is List<string>
我会像以后一样动态重新填充它:
_cell.Items.Clear();
_cell.Items.AddRange(this.Data.ResponseOptions.Select( d => d.Description).ToArray());
//d.Description is of type string
但后来我得到了这个讨厌的对话框,上面写着:
The following exception occurred in the DataGridView:
System.ArgumentException: DataGridViewComboBoxCell value is not valid.
To replace this default dialog please handle the DataError event.
顺便说一下,它说它不是“有效”也没什么用.向MS发送电子邮件说Windows Forms无效是公平的吗?
我试过抓住单元格的items属性并使用带有Add()调用的foreach()添加字符串.我仍然得到对话框.
每次我想要更新它并从头开始重新创建一个新的DataGridViewComboCell时,我也试过吹掉整个单元格.我仍然得到对话框.
我也试过手动覆盖列值(当我没有这个问题时成功).但是没有解决它.
当我试图重新填充组合单元格中的项目时,我似乎只得到了这个对话框.
现在我刚刚删除了DataError方法.
有什么建议?
解决方法:
这个问题有点老了,但我遇到了这个问题,结果发现ThunderGR绝对是正确的.当我有DataError打印报告时,我开始查看数据库中的值,并注意到它们实际上都在所有CAPS中.只需将我的字符串值更改为全部大写字母,就不会再收到错误.
这是一种可能处理DataError的方法,尽管我不想在第一时间解雇它.
private void dataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
try
{
if (e.Exception.Message == "DataGridViewComboBoxCell value is not valid.")
{
object value = dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if (!((DataGridViewComboBoxColumn)dataGridView.Columns[e.ColumnIndex]).Items.Contains(value))
{
((DataGridViewComboBoxColumn)dataGridView.Columns[e.ColumnIndex]).Items.Add(value);
}
}
throw e.Exception;
}
catch (Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "UI Policy");
if (rethrow)
{
MessageBox.Show(string.Format(@"Failed to bind ComboBox. "
+ "Please contact support with this message:"
+ "\n\n" + ex.Message));
}
}
}
这样,该值将被添加到items集合中,但仍会抛出可以记录的异常.我使用了一个消息框,因为我仍然认为用户遇到错误消息并联系支持以解决它是很重要的.希望这有助于某人!
内容总结
以上是互联网集市为您收集整理的c# – 如何捕获DataGridView验证在可编辑单元格中写入值时出错?全部内容,希望文章能够帮你解决c# – 如何捕获DataGridView验证在可编辑单元格中写入值时出错?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。