- - PR -
フォームの基本クラスについて
«前のページへ
1|2|3|4
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-05 09:46
リフレクションを使っていて、VS.NETがおかしくなった点です。
・コンパイルができない。→理由:プロセスが残っていた。 ・アプリAのみ、メニューが消えた。→理由:何故か、this.Menu=null;が追加されていた。 ・アプリBのみ、bin、objが現れる。→理由:何故か、全てのファイルを表示にチェックが。 ・ラベルが、表示されない。→理由:ラベル名が重複していたため? とりあえず、全部直したものが次のものです。 http://plaza.harmonix.ne.jp/~fakira/turedure/TestSolution1.zip | ||||||||
|
投稿日時: 2004-07-05 10:34
ん?アプリB〜Jを、アプリケーションとして独立させる必要はあるのでしょうか?また、アプリAから継承させる必要もありますか?
こうかな?アプリBから他のアプリケーションではなく、ソリューション内の他のアプリケーションを起動する、でいいのかな? フォームそのものではなく、メニューだけ持ってくればいいのでは? | ||||||||
|
投稿日時: 2004-07-05 18:08
皆さん
なんとかリフレクションにてメニュー機能を実現させることができました。 親切にしてくださってありがとうございます。 まだまだ勉強不足だと思い知らされています。 catsさん C#のプロジェクトだったので、VB.NET用に作り変えました。 大変助かりました^^ Jittaさん な、なんと、あのコメントにそんなからくりがあったんですね^^; 本当のコメントだと思ってました・・・。 それから、アプリAの親フォームと書いてあるのは、ベースフォームとは関係ないです。 紛らわしい書き方してしまいました・・・。 アプリA〜アプリJは全て、BASEフォームを継承しています。 そのBASEフォームにメニューを実装してます。 ZEBRAさん なんとかXMLでチャレンジしてみます。 それで無理ならiniファイルにします^^; | ||||||||
|
投稿日時: 2004-07-06 18:41
お世話になります。
catsさん 以下のように、FORM型にキャストしてしまうと、 test.Form1独自のpropertyにアクセスできなくなってしまいます。;; 何か良い解決策ないでしょうか? propertyにせずコンストラクタでパラメタ渡しってのも有なのでしょうか? '------------------------------------------------------------------- Private Sub MenuItem3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MenuItem3.Click Dim mi As MenuItem = sender Dim asm As [Assembly] = [Assembly].LoadFrom _ (String.Format("C:\test\bin\test.dll", mi.Text)) Dim sss As Type() = asm.GetTypes() Dim obj As Object = asm.CreateInstance(String.Format("test.Form1", mi.Text)) Dim fm As Form = CType(asm.CreateInstance _ (String.Format("test.Form1", mi.Text)), Form) fm.ShowDialog() End Sub '------------------------------------------------------------------- | ||||||||
|
投稿日時: 2004-07-06 19:12
test.Form1って起動対象のアプリケーションのことですか? だとすると、もともとの目的がこれへの参照を持たずに済ますことですから、言ってることが矛盾してますよね。 参照しない=静的に型情報を取れないということです。静的に型情報が取れない=実行できないではありませんが、どちらにしても元々コードはアプリケーションに依存できないはずですよね? で、プロパティにアクセスして何をしようとしているんでしょうか? もし共通の基底クラスのプロパティにアクセスしたいのであれば、基底フォームの型にキャストすればそのままアクセスできます。 ところで、コード中のString.Formatっていったい何をしてるんでしょうかσ [ メッセージ編集済み 編集者: なちゃ 編集日時 2004-07-06 19:13 ] | ||||||||
|
投稿日時: 2004-07-06 19:50
to:リオッタさん
というか、その為の基底クラスです。共通して必要なものは、基底クラスに持たせます。 または、プロパティをインタフェースで宣言することができますから、インタフェースを宣言して、子フォームに実装させます。基底クラスでは、インタフェースにキャストして使用します。 やっぱり、設計図を描いて見直すのがよくないですか?単に「コーディングが面倒だから」継承を使う、というのであるなら、それは間違いです。動機の一つとなり得ますが、動機のすべてとなってはいけません。 設計図は、UMLがわかるならUMLを。わからないなら、とにかく四角を描いて、その中に「やらなければならない作業」と、「保持しなければならないデータ」を書きます。とにかく全部のフォームでその四角を描いて、その上で共通するものがあるか探します。共通するものを「基底クラス」に抜き出します。また、「やらなければならない作業」については、「作業内容」としては同じだけれど、実際にやる手順が違うならインタフェースとして抜き出します。 | ||||||||
|
投稿日時: 2004-07-07 00:19
お世話になります。
Jittaさん catsさん すいません、ただ単に基底クラスでキャストしてやれば良いだけでした…。 色々と考えてると自分自身整理が付かなくなって、てんぱってました。 ひとまずココで、クラス図を描いて自分自身で整理していきたいと思います。 最後までアドバイスしていただき大変感謝しています。 | ||||||||
«前のページへ
1|2|3|4
