- - PR -
フォームのコレクション
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-17 11:11
vb.netでの質問です。
SubMainでプログラムを起動し、App.Configに最初に起動するフォームのNameを設定する事でApp.Configを変更すれば起動画面をノンプログラムで変えられる様に考えています。 その時、App.Config内に「frmMenu」(これはString型になる)と書かれていた場合、SubMainではどの様にフォームのインスタンス化を行えば良いでしょうか? (フォームの名前からのインスタンス化) それか、プロジェクト内のフォームオブジェクトが格納されているコレクション等があるのでしょうか?(プログラム起動時に格納されているもの) よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2005-06-17 11:19
あまり深く考えず、select caseで分岐すればいいと思いますよ。
_________________ たつごろー codeseek こみゅぷらす | ||||||||||||
|
投稿日時: 2005-06-17 11:24
ご回答、ありがとうございます。
Select Caseで分岐したらコーディングが必要になってしまいますね。 色々なプロジェクトでSubMainを使い回したいと考えています。 よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2005-06-17 11:29
たつごろー氏の仰るSelect Caseで分岐に一票
名前からインスタンスを作りたいということなら Activator#CreateInstance()でいかがでしょう | ||||||||||||
|
投稿日時: 2005-06-17 11:37
フォームを追加するときに、どちらにせよコーディングしてますよね。 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 ] | ||||||||||||
|
投稿日時: 2005-06-17 13:01
ご回答、ありがとうございます。
SubMainの使いまわしのメリットはデータベースの接続とデータベース接続オブジェクトをグローバル化して保存しておく為です。 VB6からのアップグレードなのでこの様な使い方をしていました。 プログラマーがDBへの接続等を意識せずに、このオブジェクトを使用すればSQL文を発行できる様にする為です。 この部分を共通化したいのですが、プロジェクト毎にメニューの画面名やログイン画面、スプラッシュ画面等の名前が違う為、SubMainでハードコーディングしたくないなーと思っています。 117さんのActivator.CreateInstanceはどの様に使えば良いのでしょうか? よろしくお願い致します。 | ||||||||||||
|
投稿日時: 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 こみゅぷらす | ||||||||||||
|
投稿日時: 2005-06-17 13:21
コードの一部を共有したいならクラスライブラリを作りましょう。 VB6でも可能な方法です。
これはメリットにならないのではないでしょうか。接続だけが処理済で、隠蔽されていても、他がそのままでは単に接続がブラックボックスになっただけではないでしょうか。使ったりソースを破棄する責任がどこにあるのかも不明確になります。 コーディング担当者が使いよいように、データベースからデータを受け取るためのクラスを作ってはいかが。
SubMainでやらないほうがいいです。 VB.NETでの設計に慣れていないということでしたら、まずは動くコードを作って、共通の処理を見つけたらそれを抜き出してクラスライブラリにして、おのおののプロジェクトから使えるようにすればよいでしょう。 パフォーマンスのために接続を続けたいのならSingletonパターンなどで実装してはいかが。 _________________ たつごろー codeseek こみゅぷらす |