- - PR -
フォームの基本クラスについて
| 投稿者 | 投稿内容 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-01 16:32
ベースの宣言
メニューを追加して、新しいインスタンスを追加したいメニューのイベントハンドラを追加する。
〜〜〜〜〜 フォームの宣言
BaseFormでabstract宣言したメソッドを実装する。
コメントの謎はやってみて解明のこと。 | ||||||||||||||||
|
投稿日時: 2004-07-01 19:07
Jittaさん
アドバイスありがとうございます。 VB.NETに書き換えて実装したところ、できました。 一人で考えてたら、到底思い付かないようなモノだったので、 大変勉強になりました。 | ||||||||||||||||
|
投稿日時: 2004-07-02 10:42
Jittaさん
すいません、解決したかに思えたのですが・・・。 メニューが1アイテムであればOKなのですが、 複数メニューアイテムがあり、遷移先も複数ある場合。 Base側に複数abstract宣言しないといけないのですよね? とゆうことはForm側にも複数メソッドを実装しないといけなくなりますよね? | ||||||||||||||||
|
投稿日時: 2004-07-02 13:23
リフレクション使って「一応」できたのですが、VS.NETがおかしくなってしまいました。
1つのプロジェクトでやれば問題ないと思うのですが、ダメなのでしょうか。 PS. System.Windows.Forms.Formのコメントの秘密が分かりました。 | ||||||||||||||||
|
投稿日時: 2004-07-02 14:27
catsさん
複数人での開発を見込んでいますので、 出来れば、機能をプロジェクトで分割したいと考えています。 ただいまリフレクションにて奮闘してます^^; | ||||||||||||||||
|
投稿日時: 2004-07-02 16:14
こんにちは。
よくよく質問の内容を見てみたらある疑問が発生しました。 (というより自分が誤解してとっていた部分がある) ProjectA、ProjectBがあり、全てのフォームがメニューを含んでいた場合、 1.AがBを呼び出した場合、元のAはどうなってしまうのでしょうか? 2.Aは消えると想定した場合、Aのインスタンスを消すのは誰でしょうか? 3.Aは消えないと想定した場合、Bが更にAを呼び出すと、元のAとBの呼び出したAは同一なのでしょうか? 自分としては、メニューを管理するメニューフォームがあり、メニューフォームがProjectA 〜 Jのインスタンスを管理し自分のフォームの一部とする、というように捉えてしまっていました。 (クラスを生成とあるので、EXEを実行させるのでは無いと考えます) ちなみに自分の考えていた方法は上記のように、アプリ部を管理するメニューフォームが基本としてあり、そのメニューフォームには、メニューボタンとパネル等のコンテナになり得るコントロールを配置します。 メニューボタンを押すと、アセンブリをロードし、アプリのフォームのインスタンスを生成、メニューフォームのパネルを親として設定後、Showすることによりアプリ部が表示されます。 むちゃくちゃ端折ったサンプルコード ----------------------------- メニューボタンのイベントで System.Reflection.Assembly assem = Assembly.Load(アセンブリ名); System.Windows.Forms.Form subForm = (System.Windows.Forms.Form)assem.CreateInstance(名前空間+フォームクラス名); subform.TopLevel = false; subform.Parent = メニューフォームのコンテナコントロール; subform.Size = メニューフォームのコンテナコントロール.Size; subform.Show(); ----------------------------- 実現したいことと違うかもしれませんが、とりあえずのサンプルとして。。。 catsさん、VS.NETがおかしくなったとのことですが、どのようにおかしくなったのでしょうか? [ メッセージ編集済み 編集者: nodera 編集日時 2004-07-02 16:21 ] | ||||||||||||||||
|
投稿日時: 2004-07-02 18:59
お世話になります。
noderaさんサンプルありがとうございます。 参考になります。 で、別の方法でお知恵を拝借したいのですが、 FORMのベースクラスにMainMenuを搭載するのでは無く、 ユーザーコントロールでMainMenuを作り、各フォームに実装する。 上記ユーザーコントロールは、ボタン押下処理をハンドリングする。 実現可能でしょうか? ただいま試行錯誤してるのですが、どうもうまくいってません・・・。 | ||||||||||||||||
|
投稿日時: 2004-07-02 19:47
メニューコントロールにするにしても、アプリ側はメニューを参照する必要がありますし、メニューコントロールもアプリ側を認識する必要があるので、相互に参照設定しようとすると循環してできないっていう問題は解決しないです。
うまくいかないというのは、それとは別の話でしょうか? できれば、もう少し具体的にうまくいっていない部分を説明をしてもらえると答え易いです(^^ #ところで、先の投稿で自分が疑問に思った部分はどういう仕組みをお考えですか? このアプリフォームって独立して動いているの? | ||||||||||||||||
