ゴミ箱.net

汚物は消毒

データバインドされたDataGridViewに勝手に列が追加される件

Visual Studioを使って.NET FrameworkのGUIアプリケーションを作成する。

前提として、フォームにはDataGridViewとBindingSourceが存在するものとする。
DataGridViewのプロパティDataSourceには、BindingSourceを設定する。
そしてBindingSourceのプロパティDataSourceに、publicなプロパティを持つクラスをプロジェクトデータソースに登録して指定する。あらかじめプロジェクトをビルドしておいた後、プロパティエディタで「プロジェクトデータソースの追加」を選択してデータソース構成ウィザードを開き、アプリケーションデータの取得元としてオブジェクトを選択する。その後、対象のクラスを選択すればよい。

このとき、フォームエディタを開くたびにDataGridViewに勝手に列が追加されるのだ。Visual C# 2010 Expressでも、Visual Studio 2012でもこの挙動だった。
最初に設定したときに列が追加されるのはまあ仕方ない。だが、その後で手動で列を消したとしても、フォームエディタを閉じて再度開くと消したはずの列が復活しているというのが嫌なポイント。何度でも、何度でも、な・ん・ど・で・も!
DataGridViewのプロパティAutoGenerateColumnsをfalseに設定すればいいのか?と思ってやってみたが、まったく効果はない。(そもそもこのプロパティはデフォルトがfalseのはずだ。)

回避策としては、フォームエディタ上ではDataGridViewのDataSourceを設定しないようにする。そしてFormのLoadイベントでDataGridViewのDataSourceにBindingSourceを指定すればよいだろう。
フォームエディタにおいて列のプロパティDataPropertyNameを設定するときに候補が表示されなくなるが、そこは気合でなんとかしてほしい。
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する