- - PR -
【VB.Net2008】Form継承時のデザイン表示について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-07-07 16:15
VB.Net2008+Oracle10gにて開発していますが、下記の現象が起きて悩んでいます。
<構成> 継承元となるFormAがある。 ・FormAのNewでOracleからデータを取得し切断する ・Oracleへの接続文字列はapp.configから取得する(connectionString) FormAを継承したFormBがある。 <現象> @FormBをVisualStudio上でデザイン表示しようとすると、内部でFormAのNewが 動き、Oracle接続に行こうとする。 AFormAのNewでOracle接続文字列を取得しようとするが、失敗して参照例外となる ※接続文字列を直書きすると例外は発生せず、データ取得も成功する 上記の現象はデザイン表示時のみ起こるもので、実行時には接続文字列取得は 成功します。 この現象の為、継承先のデザインが編集できなくなっています。 @デザイン時に継承元(FormA)のNewが走らないようにする Aデザイン時にapp.configからの取得ができる方法 Bその他解決策 @〜Bのことがわかる方いらっしゃいましたらアドバイスお願いします。 | ||||||||
|
投稿日時: 2008-07-07 16:34
Component.DesignMode プロパティ (System.ComponentModel)
http://msdn.microsoft.com/ja-jp/library/system.componentmodel.component.designmode.aspx | ||||||||
|
投稿日時: 2008-07-07 16:37
そもそも論になっちゃいますが、コンストラクタでDBにアクセスしちゃうのって
私としては気持ち悪いものを感じてしまうのですが、そのあたりどうなんでしょうか。 | ||||||||
|
投稿日時: 2008-07-07 17:06
返答ありがとうございます。
>burton999さん 継承元FormAのDesignModeプロパティを調べてみたのですが、FormBデザイン表示時に DesignModeはFalseとなっていました。 実行時にもFalseです。 >rainさん 確かにコンストラクタでDBアクセスは不思議な処理かもですね。 FormAのOracle接続部を関数化し、FormBのNew時に呼ぶように修正した結果 デザイン表示時に例外がでなくなったのでその方法で行こうと思います。 ありがとうございました。 _________________ by うちうせん | ||||||||
|
投稿日時: 2008-07-07 17:30
コンストラクタ内では、DesignMode プロパティの値はまだセットされてません。
ダウト。 Form がデザイナに「表示」された時点では DesignMode = true のはずです。 「インスタンスの生成=表示」ではありません。 | ||||||||
|
投稿日時: 2008-07-07 17:43
>ひどりさん
継承元FormAのNew関数内にMe.DesignModeをメッセージボックス表示させる行を入れて 継承先のFormBをデザイン表示させるとFalseと出ました。 コンストラクタの時点ではまだ値がセットされていないということなので確認方法のミスですね。 _________________ by うちうせん |
1