- - PR -
フォームの切り替え
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-12-05 13:54
Controlを継承するコントロールには、Tagという『コントロールに関するデータを格納するオブジェクトを取得または設定』するプロパティがあるので、作ったフォームをここに格納する。。。
sub eventhandler hadles button.click if typeof sendere is system.windows.forms.control then dim cntrl as ...control = ctype(sender, ...control) if cntrl.tag is nothing then cntrl.tag = new フォーム その他の処理 else dim frm as フォーム = ctype(cntrl.tag, フォーム) frm.active endif endif end sub 不要になったら解放し、nullを代入のこと。 |
|
投稿日時: 2003-12-05 17:01
確かにButton(Control)のTagを使うとスマートにかけそうですね。
Subformが閉じられたら該当のButtonのTagにnull(VB.NETならnothing)をセットしなければいけないと思うので、こんな風にしてみました。 双方のTagに入れあっているので、気持ち悪いですが・・・。 他によい方法が浮かばなかった・・・(--;) private void button_Click(object sender, System.EventArgs e) { SubForm form = null; if(((Button)sender).Tag == null) { form = new SubForm(); form.Tag = sender; form.Closed += new EventHandler(form_Closed); form.Text = ((Button)sender).Text; form.Show(); ((Control)sender).Tag = form; } else { ((Form)((Button)sender).Tag).Activate(); } } private void form_Closed(object sender, EventArgs e) { ((Control)(((Control)sender).Tag)).Tag = null; } 本当はisとかasとかでチェックするべきですが、面倒なので、今回はキャストしまくりです。ご勘弁を。 |
|
投稿日時: 2003-12-08 10:42
お返事が送れて申し訳ありません
ナキオさん Jittaさん ないとーさん わざわざ回答のための時間を取って頂いてありがとう御座います。 やり方、色々あるんですね。かなり勉強になりました。 回答の方法で色々試して見ますね。 どうもありがとう御座いました。 |
