- PR -

フォームのコレクション

投稿者投稿内容
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2005-06-17 11:11
vb.netでの質問です。
SubMainでプログラムを起動し、App.Configに最初に起動するフォームのNameを設定する事でApp.Configを変更すれば起動画面をノンプログラムで変えられる様に考えています。
その時、App.Config内に「frmMenu」(これはString型になる)と書かれていた場合、SubMainではどの様にフォームのインスタンス化を行えば良いでしょうか?
(フォームの名前からのインスタンス化)

それか、プロジェクト内のフォームオブジェクトが格納されているコレクション等があるのでしょうか?(プログラム起動時に格納されているもの)

よろしくお願い致します。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-06-17 11:19
あまり深く考えず、select caseで分岐すればいいと思いますよ。

_________________
たつごろー
codeseek
こみゅぷらす
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2005-06-17 11:24
ご回答、ありがとうございます。

Select Caseで分岐したらコーディングが必要になってしまいますね。
色々なプロジェクトでSubMainを使い回したいと考えています。

よろしくお願い致します。
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-06-17 11:29
たつごろー氏の仰るSelect Caseで分岐に一票

名前からインスタンスを作りたいということなら
Activator#CreateInstance()でいかがでしょう
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-06-17 11:37
引用:

Select Caseで分岐したらコーディングが必要になってしまいますね。
色々なプロジェクトでSubMainを使い回したいと考えています。


フォームを追加するときに、どちらにせよコーディングしてますよね。
kosekiさんがSubMainの使いまわしに求めるメリットとは何ですか?
私は、型情報がコードから失われるのであまり使うべきではないと思ってます。

目指しているのはコレでしょうか。
User Interface Process (UIP) Application Block - Version 2.0
http://www.codeseek.net/dotNet/dotNetABUIP1.htm

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/uipab.asp?frame=true




_________________
たつごろー http://www.codeseek.net

[ メッセージ編集済み 編集者: たつごろー 編集日時 2005-06-17 11:40 ]
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2005-06-17 13:01
ご回答、ありがとうございます。

SubMainの使いまわしのメリットはデータベースの接続とデータベース接続オブジェクトをグローバル化して保存しておく為です。
VB6からのアップグレードなのでこの様な使い方をしていました。
プログラマーがDBへの接続等を意識せずに、このオブジェクトを使用すればSQL文を発行できる様にする為です。

この部分を共通化したいのですが、プロジェクト毎にメニューの画面名やログイン画面、スプラッシュ画面等の名前が違う為、SubMainでハードコーディングしたくないなーと思っています。

117さんのActivator.CreateInstanceはどの様に使えば良いのでしょうか?

よろしくお願い致します。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-06-17 13:07
http://www.microsoft.com/japan/msdn/library/

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemactivatorclasstopic.asp?frame=true

http://www.google.co.jp/search?hl=ja&q=Activator.CreateInstance&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

_________________
たつごろー
codeseek
こみゅぷらす
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-06-17 13:21
引用:

SubMainの使いまわしのメリットはデータベースの接続とデータベース接続オブジェクトをグローバル化して保存しておく為です。
VB6からのアップグレードなのでこの様な使い方をしていました。


コードの一部を共有したいならクラスライブラリを作りましょう。
VB6でも可能な方法です。

引用:

プログラマーがDBへの接続等を意識せずに、このオブジェクトを使用すればSQL文を発行できる様にする為です。


これはメリットにならないのではないでしょうか。接続だけが処理済で、隠蔽されていても、他がそのままでは単に接続がブラックボックスになっただけではないでしょうか。使ったりソースを破棄する責任がどこにあるのかも不明確になります。
コーディング担当者が使いよいように、データベースからデータを受け取るためのクラスを作ってはいかが。

引用:

この部分を共通化したいのですが、プロジェクト毎にメニューの画面名やログイン画面、スプラッシュ画面等の名前が違う為、SubMainでハードコーディングしたくないなーと思っています。


SubMainでやらないほうがいいです。
VB.NETでの設計に慣れていないということでしたら、まずは動くコードを作って、共通の処理を見つけたらそれを抜き出してクラスライブラリにして、おのおののプロジェクトから使えるようにすればよいでしょう。

パフォーマンスのために接続を続けたいのならSingletonパターンなどで実装してはいかが。

_________________
たつごろー
codeseek
こみゅぷらす

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