0

オーバーロードされたメソッドを持つクラス オブジェクトを含む ComboBox の列をロードすると、dataGridView から例外が発生しToString()ます。

このエラーを防ぐためにインターネットで見つけることができるすべてのことを試しました.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 に答える