DataGridView.ReadOnly は、DataGridViewColumn.ReadOnly を書き換えてしまう…

今頃知りました。。
DataGridView.ReadOnly プロパティ (System.Windows.Forms)
DataGridViewColumn.ReadOnly プロパティ (System.Windows.Forms)
ドキュメントには載ってないように思います。


固定で読取専用の列があり、一時的に DataGridView を全部読取専用にし、元に戻すと全列編集可能になってしまいました。
※元々設定していた列の読取専用設定も無くなってしまう!
これは、罠だな〜。DataGridView で ReadOnly を変更する場合は、全列の ReadOnly を再設定する必要がありそうです。

Trace.WriteLine(this.Column1.ReadOnly); // true
Trace.WriteLine(this.Column2.ReadOnly); // false
Trace.WriteLine(this.Column3.ReadOnly); // false
this.dataGridView1.ReadOnly = true;
Trace.WriteLine(this.Column1.ReadOnly); // true
Trace.WriteLine(this.Column2.ReadOnly); // true
Trace.WriteLine(this.Column3.ReadOnly); // true
this.dataGridView1.ReadOnly = false;
Trace.WriteLine(this.Column1.ReadOnly); // false
Trace.WriteLine(this.Column2.ReadOnly); // false
Trace.WriteLine(this.Column3.ReadOnly); // false


これを検証していると、Windows フォームデザイナでも変な動きをしたので、MSConnect に挙げてみました。