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

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

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

Re[4]: VisualBasic2008でアプリをどう作りますか?


(過去ログ 59 を表示中)

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

■34029 / inTopicNo.1)  VisualBasic2008でアプリをどう作りますか?
  
□投稿者/ nam (4回)-(2009/03/17(Tue) 14:52:02)

分類:[VB.NET/VB2005 以降] 

いつもお世話になっています。
タイトルどおりの質問なのですが、
現在VB6で作成されたアプリがあります。
今回それをVB2008で作り直すことになって
今いろいろ考えて情報収集してます。

今一番悩んでいることは、
フォーム表示の部分について悩んでいます。
VB6で
Form1⇒Form2⇒Form3と遷移する画面があります。
このときVB6では前の画面(Form2であればForm1)をCloseしてます。
これをVB2008で行う場合、前画面はCloseではなくHideとするのが
普通なんでしょうか?
Closeだとアプリ全体が終了してしまいますよね。。。

初歩的な質問で申し訳ありませんがよろしくお願いいたします。
引用返信 編集キー/
■34033 / inTopicNo.2)  Re[1]: VisualBasic2008でアプリをどう作りますか?
□投稿者/ はつね (964回)-(2009/03/17(Tue) 16:24:12)
はつね さんの Web サイト
No34029 (nam さん) に返信
> VB6で
> Form1⇒Form2⇒Form3と遷移する画面があります。
> このときVB6では前の画面(Form2であればForm1)をCloseしてます。

これが普通じゃない気がします。


> これをVB2008で行う場合、前画面はCloseではなくHideとするのが
> 普通なんでしょうか?

画面の遷移をコントロールするModuleを用意して、そこからForm1を表示してとかしてもダメ?
もしかしたら、Formを開くときにフォーム用の変数用意しないで規定のインスタンスで済ませちゃってませんか?
例)Form1.Show



引用返信 編集キー/
■34035 / inTopicNo.3)  Re[2]: VisualBasic2008でアプリをどう作りますか?
□投稿者/ nam (6回)-(2009/03/17(Tue) 16:50:57)
はつね さん回答ありがとうございます。

>>Form1⇒Form2⇒Form3と遷移する画面があります。
>>このときVB6では前の画面(Form2であればForm1)をCloseしてます。
>
> これが普通じゃない気がします。

メインメニュー(Form1)からサブ画面(Form2)に遷移するときには
メインメニュー(Form1)は閉じる(Close)ようにしていました。
これって普通じゃなかったんでしょうか。。。

>
>>これをVB2008で行う場合、前画面はCloseではなくHideとするのが
>>普通なんでしょうか?
>
> 画面の遷移をコントロールするModuleを用意して、そこからForm1を表示してとかしてもダメ?
> もしかしたら、Formを開くときにフォーム用の変数用意しないで規定のインスタンスで済ませちゃってませんか?
> 例)Form1.Show

SubMainで"TopForm = New Form1"という宣言をして使ってます。
Form2に遷移するときにForm1で"NextForm As New Form2"と宣言しています。
きっと"NextForm As New Form2"をモジュールで宣言すれば良いということを
指摘していただいていると思います。

これで1回試してみます。

ありがとうございます。





引用返信 編集キー/
■34038 / inTopicNo.4)  Re[3]: VisualBasic2008でアプリをどう作りますか?
□投稿者/ よねKEN (293回)-(2009/03/17(Tue) 17:14:17)
> >>Form1⇒Form2⇒Form3と遷移する画面があります。
> >>このときVB6では前の画面(Form2であればForm1)をCloseしてます。
>>
>>これが普通じゃない気がします。
>
> メインメニュー(Form1)からサブ画面(Form2)に遷移するときには
> メインメニュー(Form1)は閉じる(Close)ようにしていました。
> これって普通じゃなかったんでしょうか。。。

多くの場合は前画面に戻れるようになっていると思いますし、
戻ったときには遷移前の元々の状態(+一部は後画面での処理結果を反映した状態)にすると思うので、
前画面はHideにしておくだけ、という方が多いのではないかと思います。

もちろん遷移前の画面がその後まったく不要なのであれば、Closeするということもあるとは思います。

引用返信 編集キー/
■34039 / inTopicNo.5)  Re[3]: VisualBasic2008でアプリをどう作りますか?
□投稿者/ はつね (965回)-(2009/03/17(Tue) 17:20:31)
はつね さんの Web サイト
No34035 (nam さん) に返信
> >>Form1⇒Form2⇒Form3と遷移する画面があります。
> >>このときVB6では前の画面(Form2であればForm1)をCloseしてます。
>>
>>これが普通じゃない気がします。
> 
> メインメニュー(Form1)からサブ画面(Form2)に遷移するときには
> メインメニュー(Form1)は閉じる(Close)ようにしていました。
> これって普通じゃなかったんでしょうか。。。

ちょっと説明が適切じゃなかったですね。
メインメニューから呼び出したサブ画面があるのにメインがなくなってしまうってなんか変じゃないですか?
まあ、VB6のときはそれでも動いちゃうのもForm1がメイン扱いではなく見えない管理元があるって考えてみて下さい。

その見えない管理元をVB.NETではモジュールなどで自分で管理しないといけないんですね。
ちゃんとやろうとすると↓の最後の回答みたいに細々とやらないといけないみたいです。
http://dobon.net/vb/bbs/log3-4/2371.html

ShowDialogでいいなら簡単なんですけどね。
Module Module1

    Sub Main()
        Dim mode As Integer = 0
        Do While mode >= 0
            Select Case mode
                Case 0
                    Using _frm As New Form1
                        _frm.ShowDialog()
                        mode = _frm.ReturnValue
                    End Using
                Case 1
                    Using _frm As New Form2
                        _frm.ShowDialog()
                        mode = _frm.ReturnValue
                    End Using
            End Select
        Loop
    End Sub

End Module

引用返信 編集キー/
■34040 / inTopicNo.6)  Re[4]: VisualBasic2008でアプリをどう作りますか?
□投稿者/ nam (7回)-(2009/03/17(Tue) 17:36:45)
はつねさん、よねKENさん
回答ありがとうございます。

はつねさんのリンク先も拝見させていただきました。
VB6で見えないところでやっていた管理作業を
自分で書く必要が出てきてしまうのですね。

確かにメインフォーム(Form1)はまったく必要がないものではなく、
いずれ戻る画面と考えればHideでもいいのかもしれないですね。

リンク先にもありましたが、
よく考えたら自分もApplication.Run(TopForm)としてました。
この記述ではCloseできなくて当然でした。

VB6との違い、というか今まで楽をしてきた部分を
自分で作らなければならないということで大変だなと感じました。

これからもここの掲示板にはお世話になると思いますので
よろしくお願いします。

ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -