ユーザーが DataGridViewTextBox にテキストを入力しているときに、入力した値に応じてコントロールを有効または無効にしたい場合があります。たとえば、正しい値を入力した後にボタンを有効にします
Microsoft は、無効にできる DataGridViewButtonCell の作成方法に関する記事で方法を示しました。
これが彼らのトリックです(他のソリューションでも見られます)
- イベント DataGridView.CurrentCellDirtyStateChanged を取得していることを確認してください
- このイベントを受信したら、DataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit); を呼び出して、現在のセルの変更をコミットします。
- このコミットは、イベント DataGridView.CellValueChanged につながります
- このイベントが発生したときに通知を受け取るようにしてください
- OnCellValueChanged 関数で、変更された値の有効性を確認し、対応するコントロール (ボタンなど) を有効にするか無効にするかを決定します。
OnCellValueChanged で CommitEdit がテキストを選択することを除いて、これは正常に機能します。したがって、64 を入力したい場合は、6 を入力したときに通知され、4 を入力したときに通知されます。ただし、6 が選択されているため、64 は取得されませんが、6 は 4 に置き換えられます。何らかの方法で、コードで 6 の選択を解除する必要があります。値を解釈する前に OnCellValueChanged で。
プロパティ DataGridView.Selected はそのトリックを実行せず、テキストの選択を解除しませんが、セルの選択を解除します。
では、選択したセルのテキストを選択解除するにはどうすればよいですか?