|
分類:[C#]
DataGridViewってフォーカスを制御するようなものは持ってないんですよね。
なので、CellEnter、CellClick、CellDoubleClickイベントプロシージャに、 if (e.ColumnIndex == 1) ((DataGridView)sender)[e.ColumnIndex, e.RowIndex].Selected = false; を書いて、2列目をReadOnlyにしてしまうとかでしょうか? ただし、セルを囲む 点線は出ます。でも、これはいいですよね。どこにフォーカスがあるかわかりますし。
クリックを完全に無視させるなら、以下みたいな感じになりますが、キーボードの アローキーで操作されると、そのセルが選択状態になるので、上のCellEnterと組 み合わせる必要があるでしょう。
public class dataGridView1RistrictFocus : DataGridView { protected override void OnMouseDown(MouseEventArgs e) {
if (this.HitTest(e.X, e.Y).ColumnIndex == 1) return;
base.OnMouseDown(e); } }
|