0

ToString()当我使用具有重载方法的类对象加载 ComboBox 的 Column 时,我收到了来自 dataGridView 的异常。

我已经尝试了所有我可以在互联网上找到的方法来防止这个错误,我还有另一个关于 SO 的未解决问题也试图解决这个问题,但是我没有成功。

我收到的最直接的答案是处理错误消息,并阻止它加载,在这个程度上我已经搜索过了,并创建了这个我认为应该可以解决问题的方法。

private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs anError)
{
    anError.Cancel = true;
} 

它有点粗糙,但我相信它应该可以工作,但是当我添加断点时,错误仍然存​​在,并且永远不会中断这个函数。我以前从未对错误处理做过任何事情,而且很可能我遗漏了一些东西。

想法?

4

3 回答 3

3

看看这个...

private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs anError)
{

MessageBox.Show("Error happened " + anError.Context.ToString());

if (anError.Context == DataGridViewDataErrorContexts.Commit)
{
    MessageBox.Show("Commit error");
}
if (anError.Context == DataGridViewDataErrorContexts.CurrentCellChange)
{
    MessageBox.Show("Cell change");
}
if (anError.Context == DataGridViewDataErrorContexts.Parsing)
{
    MessageBox.Show("parsing error");
}
if (anError.Context == DataGridViewDataErrorContexts.LeaveControl)
{
    MessageBox.Show("leave control error");
}

if ((anError.Exception) is ConstraintException)
{
    DataGridView view = (DataGridView)sender;
    view.Rows[anError.RowIndex].ErrorText = "an error";
    view.Rows[anError.RowIndex].Cells[anError.ColumnIndex].ErrorText = "an error";

    anError.ThrowException = false;
}
}

阅读此链接:DataGridViewDataErrorEventArgs

于 2016-06-14T21:51:44.627 回答
1

是的,毕竟这很简单。

private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs anError)

需要改名。

private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs anError)

大写 D 女士们先生们。

感谢所有的帮助。

于 2013-05-02T09:22:51.870 回答
0

您必须在项目中的文件“YourForm.Designer.cs”中插入行代码

    this.dataGridView1.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.dataGridView1_DataError);

在将此方法添加到文件“YourForm.cs”之前

    private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs anError)
    {
        MessageBox.Show("Error happened " + anError.Context.ToString());
    }
于 2016-11-25T02:55:45.373 回答