C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

フォームの移動について


(過去ログ 1 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■183 / inTopicNo.1)  フォームの移動について
  
□投稿者/ ShinShin 二等兵(1回)-(2005/03/07(Mon) 17:25:37)

分類:[VB.NET] 


分類:[VB.NET] 

じゃんぬねっとさん、VB.NETの質問をさせてください。

Form1→Form2→Form1→Form2→Form3→Form2→Form3→Form4
というような複数のフォームをいったりきたりするアプリケーションを作っております。
この時のFormの移動方法はどのような記述が適当になるのでしょうか?

私が書いたForm1→Form2→Form1の移動のコードは

Class Form1
dim F2 as New Form2
F2.Show()
End Class

Class Form2
dim F1 as New Form1
F1.Show()
End Class

これではページの移動ではなく、次々にページを作ってしまうことになると思います。
ページを次々に作るにしても、メモリは解放していく必要があると思い、次のように記述しました。

Class Form1
dim F2 as New Form2
F2.Show()
Me.Dispose
End Class

このように記述しますと処理が終わってしまいます。

どのように記述するのが適切なのか、どうか教えて下さい



0
引用返信 編集キー/
■184 / inTopicNo.2)  Re[1]: フォームの移動について
□投稿者/ 中博俊 一等兵(7回)-(2005/03/07(Mon) 22:00:04)
中博俊 さんの Web サイト

分類:[VB.NET] 

>じゃんぬねっとさん、VB.NETの質問をさせてください。
じゃんぬじゃなくてごめんね。

>Form1→Form2→Form1→Form2→Form3→Form2→Form3→Form4
>というような複数のフォームをいったりきたりするアプリケーションを作っております。
>この時のFormの移動方法はどのような記述が適当になるのでしょうか?
まず行ったり来たりの定義を少し整理する必要があります。

>Class Form1
>dim F2 as New Form2
>F2.Show()
>Me.Dispose
>End Class

起動した画面を閉じる=プログラムの終了を基本的に意味します。

おもにメニューや、メイン画面中心のアプリケーションを想像すると分かりますよね?

あなたが作ろうとしているアプリケーションがなぜ複数の画面を行ったりきたりするのか、もう少し詳しく教えてください。

------------------------------------------------------
中博俊 MSMVP Visual Studio C# Since 2004/04-2005/03, MCP
http://naka.wankuma.com/
http://naka.wankuma.com/blog/
naka@wankuma.com


0
引用返信 編集キー/
■185 / inTopicNo.3)  Re[2]: フォームの移動について
□投稿者/ ShinShin 二等兵(2回)-(2005/03/07(Mon) 23:48:35)

分類:[VB.NET] 

中博俊さん、さっそくのご回答どうもありがとうございます。

>起動した画面を閉じる=プログラムの終了を基本的に意味します。
やはりそうなるのですか。
.Disposeは多用に使えないですね。

>あなたが作ろうとしているアプリケーションがなぜ複数の画面を行ったりきたり>するのか、もう少し詳しく教えてください。

様々な条件を設定して、その設定から計算結果を導き出すアプリを作ろうとしております。
条件1を設定(Form1)→条件2を設定(Form2)→条件3を設定(Form3)→結果を表示(Form4)
という感じの操作の流れなのですが、結果表示後に前の画面に戻り条件を変更させれるようにしたいのです。
結果を表示(Form4)→条件3を設定(Form3)→条件2を設定(Form2)→条件3を設定(Form3)→再び結果を表示(Form4)
という感じです。

Class Form1
dim F2 as New Form2
F2.Show()
End Class

Class Form2
dim F1 as New Form1
F1.Show()
End Class

先に書きました上記のような記述で見かけ上は処理ができているのですが、次々に画面を作ってしまっているので、メモリの無駄が多すぎると思ってしまいます。

このような場合はどういう処理が適切なのでしょうか?
どうか教えてください。




0
引用返信 編集キー/
■186 / inTopicNo.4)  Re[3]: フォームの移動について
□投稿者/ 中博俊 一等兵(8回)-(2005/03/07(Mon) 23:56:39)
中博俊 さんの Web サイト

分類:[VB.NET] 

あらかじめ断っておきますが、Disposeは絶対に行う必要があります。
そして、あなたの言っているのは実は

1->2->3->4
4->3->2->3->4

では無いのではないでしょうか?

4,3,2,3,4というのは画面遷移的に戻っているんじゃないんでしょうか?
ざっと見た限りウィザード形式のプログラムと同じなのに、戻るという認識が無いんじゃないか?ってのと、画面とビジネスロジック(この場合だと条件設定の結果そのもの)を分離できていないんだろうなぁと推察します。

で、

Class Form1
dim F2 as New Form2
F2.Show()
End Class

Class Form2
dim F1 as New Form1
F1.Show()
End Class

ですが、

Class Form1
dim F2 as New Form2
'ポイント1
me.Hide()
'ポイント2
if ( F2.ShowDialog() = DialogResult.OK)then
正常に戻ってきた
me.show()
endif
'ポイント3
End Class

Class Form2
ボタンとかで
'ポイント4
me.DialogResult=DialogResult.OK
'ポイント5
End Class

こんな感じで戻る処理を実装してあげるといいと思います。
上のソースで書いたポイントの1,2,3,4,5ですが、どの順番で流れると思いますか?

#私の書いたものだけが最適解ではないですが、案の1です。


0
引用返信 編集キー/
■192 / inTopicNo.5)  Re[4]: フォームの移動について
□投稿者/ ShinShin 二等兵(3回)-(2005/03/08(Tue) 17:58:27)

分類:[VB.NET] 

中博俊さん、さっそくのご回答どうもありがとうございます。

>ざっと見た限りウィザード形式のプログラムと同じなのに、戻るという認識が無いんじ>ゃないか?ってのと、画面とビジネスロジック(この場合だと条件設定の結果そのも>>の)を分離できていないんだろうなぁと推察します。

おっしゃられる通りでした。
戻るという処理の認識が誤っていました。
戻るボタンで新しい画面を作ってしまっていました。

中博俊さん、どうもありがとうございました。

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -