DataGridViewCheckBoxCell
コントロールで aを使用していDataGridView
ます。ユーザーがチェックボックスをクリックしている間、特定の条件を確認し、その値を false に設定します。ただし、ユーザーが次の行に移動するまでチェックボックスはオンのままです。値がすぐに更新されるようにこれを修正するにはどうすればよいですか
2 に答える
最初に変更をコミットし、制御を別のセルに変更してカムバックします。
ええ...おそらくこの時点で気にする必要はありませんが、最近、同じ問題であると思われることに遭遇しました。選択したチェックボックスをクリックすることが、チェックされているかチェックされていない直接の原因である場合、実際に必要なのは行うことは、DataGridView の CellDirtyStateChanged を処理し、グリッドにそれ自体で CommitEdit を指示することです。一方、DataGridViewCheckBoxColumn のチェックボックスの状態が、クリックした以外の理由で変化した場合 (たとえば、コンテキスト メニューを使用して一括切り替えした結果、または何かを確認した後にプログラムで設定した場合) 、そしてそのチェックボックスにはフォーカスがあります。選択を解除する以外に何も言うことができない限り、正しいチェック状態で強制的に再描画されます。
悲しいことに、これを回避する方法が見つからなかったので、だましました: セルのチェックボックスをプログラムで切り替えるコードの後、グリッドの IsCurrentCellInEditMode が true で、その CurrentCell の列がチェックボックスの列である場合、CurrentCell を 1 列移動してから戻る。最も美しい解決策ではありませんが、私はそのコントロールとの戦いにうんざりしていました。明らかなちらつきなどもなく機能したので、十分です.
もちろん、クリックされた 1 つのセルだけを検証する場合は、クリック イベントで検証を処理して変更された値を自分でプッシュするよりも、値自体を検証するより簡単な方法があるでしょう。