0

CellValidatingイベントを実行してComboBoxから有効な値のみが選択されるようにする必要があるDataGridViewがあります。これが必要なのは、ComboBoxにカテゴリの表示に使用されるダミーの行が含まれており、ユーザーが選択できるフィールドが各カテゴリの下にリストされているためです。

検証コードは正常に機能していますが、検証中の行からすべての値が消去されるという望ましくない副作用があります。イベントハンドラーのコードをこれまで削除しましたが、問題は引き続き発生します。

private void dgvInformation_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    DataGridView dgv = this.dgvInformation;    
    DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
}

削除した場合

DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]; 

行の場合、問題は発生しません。

DGVはバインドされていないため、問題が発生していると思います。テストとして、単純なフォームを作成し、バインドされていないDGV値を入力しました。CellValidatingイベントが発生するたびに、その行は消去されますが、List <>を作成し、それをデータソースとして使用すると、値は消去されません。これは、バインドされていないDGVのバグである可能性がありますか?

どうもありがとう

4

1 に答える 1

0

センテンスに問題があります:「ComboBoxから有効な値のみが選択されるようにするため」。コンボボックスを使用すると、テキストボックスなどのコントロールに間違った値が表示されるのを実際に防ぐことができます。コンボボックスに有効な値を表示したり、コンボボックスのセレクションの組み合わせを検証する必要がある場合は、すべてのセレクションが行われた後に検証したりしないでください。検証ルーチンを実行するための[送信]ボタンのようなものです。

それでも、各セレクションの後にコンボボックスを検証する必要があると思われる場合は、コンボボックスのSelectionChangedイベントで何らかの方法で検証を実行する必要があります。

于 2012-09-21T10:52:44.807 に答える