1

as column テンプレートDataGridViewを持つ列があります。DataGridViewCheckBoxColumnユーザーがチェックボックスをオンにしたときに、いくつかの条件に失敗した場合は、プログラムでチェックを外す必要があります。私はこれを行いましたが、このチェック解除ロジックは、セルからフォーカスを手動で変更した後にのみ有効になります。プログラムでフォーカスを変更しようとしましたが、うまくいきませんでした。これに対する解決策はありますか?

4

3 に答える 3

2

コードを少し変更するだけで答えが見つかりました。datagridviewの編集キャンセル機能を利用しました。チェックボックスの値の変更を以前に発生させるために、CurrentCellDirtyStateChanged イベント内でこのコードを使用していました。

CommitEdit(DataGridViewDataErrorContexts.Commit) 

今、私はそれを変更しました。

CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange) 

そして、

CancelEdit()

変更をロールバックします。

于 2012-11-07T06:58:03.237 に答える
1

DataGridViewCell.Valueプロパティの値をfalse(またはtrue)に設定するだけです:

((DataGridViewCheckBoxCell)row.Cells[CheckBoxColumn.Index]).value = false;
于 2012-11-07T05:21:31.730 に答える
1

最近、私は同様の問題を抱えていました。私の場合、セル値を false に設定するか、TrueValue と FalseValue (DataGridViewCheckBoxCell の場合) を操作すると失敗しました。

最後に、単純な DataGridView メソッドを使用して、私が望んでいたことを達成することができました (いくつかの条件が失敗した場合はチェックを外します):

dataGridView1.CancelEdit()

それが役に立てば幸い。

于 2014-04-09T11:51:58.560 に答える