ゴミ箱.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

文系の闇は深い

2015年9月15日の朝日新聞13版25ページ「水害 命のためにできること」から引用。

石垣教授によると、水の力は水の深さと流れの速さに大きく左右される。プールの中で歩くと前に進みづらいのは水圧のせいだ。水圧は「水深の二乗」に比例するので、水深が2倍になると水圧は4倍に。


※石垣教授=防災水工学が専門の関西大学教授・石垣泰輔氏

俺の住んでる次元では水圧は上下左右から均等にかかって相殺するから水の中を歩く妨げにならなかったんだけどなあ。そのかわりこっちの次元では水の粘性抵抗が支配的。
あとあっちの次元では水圧が水深の2乗に比例するらしい。深海探索が大変そうですね。

仮にも工学系の教授がそんなデタラメを言うとはどう考えても思えん。
どうせ理科のりも書けないようなド文系の記者がインタビューの意味も分からずちんこいじりながら記事を書いたんだろうなあ・・・吉田調書の息づかいを感じる。

PageTop