- PR -

【VB.Net2008】Form継承時のデザイン表示について

1
投稿者投稿内容
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 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のことがわかる方いらっしゃいましたらアドバイスお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-07-07 16:34
Component.DesignMode プロパティ (System.ComponentModel)
http://msdn.microsoft.com/ja-jp/library/system.componentmodel.component.designmode.aspx
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-07-07 16:37
そもそも論になっちゃいますが、コンストラクタでDBにアクセスしちゃうのって
私としては気持ち悪いものを感じてしまうのですが、そのあたりどうなんでしょうか。
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2008-07-07 17:06
返答ありがとうございます。

>burton999さん
継承元FormAのDesignModeプロパティを調べてみたのですが、FormBデザイン表示時に
DesignModeはFalseとなっていました。
実行時にもFalseです。

>rainさん
確かにコンストラクタでDBアクセスは不思議な処理かもですね。

FormAのOracle接続部を関数化し、FormBのNew時に呼ぶように修正した結果
デザイン表示時に例外がでなくなったのでその方法で行こうと思います。

ありがとうございました。
_________________
by うちうせん
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-07-07 17:30
引用:

burton999さんの書き込み (2008-07-07 16:34) より:
Component.DesignMode プロパティ (System.ComponentModel)
http://msdn.microsoft.com/ja-jp/library/system.componentmodel.component.designmode.aspx



コンストラクタ内では、DesignMode プロパティの値はまだセットされてません。

引用:

FormBデザイン表示時に DesignModeはFalseとなっていました。



ダウト。

Form がデザイナに「表示」された時点では DesignMode = true のはずです。
「インスタンスの生成=表示」ではありません。
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2008-07-07 17:43
>ひどりさん
継承元FormAのNew関数内にMe.DesignModeをメッセージボックス表示させる行を入れて
継承先のFormBをデザイン表示させるとFalseと出ました。
コンストラクタの時点ではまだ値がセットされていないということなので確認方法のミスですね。

_________________
by うちうせん
1

スキルアップ/キャリアアップ(JOB@IT)