【C#】ReadOnlyのDataGridViewでも、ComboboxColumnやButtonColumnは押せる(例外が出る)
内容を表示するだけで、操作させたくないDataGridViewを表示するとします。今回は、DataGridViewComboboxColumnを追加していました。
参照だけにしたいならReadOnly
参照だけにしたいならReadOnly=trueとすれば読み取り専用になります。が、DataGridViewComboboxColumnは押せてしまいます。DataGridViewの上にComboboxが載っているからでしょうか?DataGridViewはReadOnlyになっていても、その上にあるものはReadOnlyにならないのだと考えます。
Enabled=falseにしてみよう
次にEnabled=falseにすることで何とかしようと考えました。ですが、これではデータ列が多い場合に、スクロールバーを出していましたがスクロールバーが機能しなくなり画面外のデータが見れなくなります。
解決策
ReadOnly=trueにしたうえで、CellEnterのイベントハンドラでComboboxColumnが押された瞬間にreturnする。
これでうまくいきました。