DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Formの表示方法

  • 題名: Formの表示方法
  • 著者: ヒデカズ
  • 日時: 2005/03/02 8:55:18
  • ID: 9440
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[環境(XP)、使用言語(C#)]
分類:[.NET]

おはようございます。 ヒデカズです。

C#で356日24時間フル稼働する制御系のプログラムを作りたいのですが
今回、初めてC#で作成する為Showを使うべきかShowDialogを使うべきか解りません。

構成は下記です。
SplashWindow起動後、運転画面1を表示
運転画面からボタンでメニューを表示(ShowDialog)し、メニューから運転画面2、運転画面3
などを表示させたいのですが、この場合はShowで良いのでしょうか?
それともShowDialogの方が良いのでしょうか?
2005/03/04(Fri) 14:28:15 編集(投稿者)

おはようございます、じゃんぬねっと です。

■No9440に返信(ヒデカズさんの記事)
> この場合はShowで良いのでしょうか?
> それともShowDialogの方が良いのでしょうか?

呼び出し側にも制御を移したいのならば、Show() メソッド
呼び出し側に制御を移したくないのならば、ShowDialog() メソッド

http://jeanne.wankuma.com/tips/form/01-show.html
http://jeanne.wankuma.com/tips/form/02-showdialog.html
じゃんぬねっとさん、早速のお返事ありがとうございます。

■No9441に返信(じゃんぬねっとさんの記事)
> 呼び出し側にも制御を移したいのならば、Show() メソッド
> 呼び出し側に制御を移したくないのならば、ShowDialog() メソッド

呼び出し側にも制御を移したいので、呼び出し側(運転画面1から運転画面2を呼び出した場合)はShow()メソッドですね。
この場合、運転画面1はthis.Close()で良いのでしょうか?
逆に運転画面2から運転画面1を表示する事もあるのでthis.hide()の方が良いのですか?
こんにちは、じゃんぬねっと です。

■No9444に返信(ヒデカズさんの記事)
> この場合、運転画面1はthis.Close()で良いのでしょうか?
> 逆に運転画面2から運転画面1を表示する事もあるのでthis.hide()の方が良いのですか?

運転画面 2 が表示されている間は、表示したくないのならば Hide() でしょう。
というより、呼び出し側を this.Close(); しちゃまずいでしょう。(^-^;)
ヒデカズです。

■No9445に返信(じゃんぬねっとさんの記事)
> 運転画面 2 が表示されている間は、表示したくないのならば Hide() でしょう。
> というより、呼び出し側を this.Close(); しちゃまずいでしょう。(^-^;)
すいません。 確かに呼び出し側を this.Close(); しちゃまずいですね。
運転画面1が親だから終了しちゃいますよね( ;^^)ヘ..

Hide()って事は非表示になってるだけで、運転画面2から運転画面1を表示させる場合は、またShow()で表示させるって事ですよね?
と言う事は、運転画面2でnew 運転画面1のインスタンスを作成するんですよね?

これだと、毎回運転画面2で運転画面1のインスタンスを作成してメモリを食い潰す事になりませんか?
■No9448に返信(ヒデカズさんの記事)
> Hide()って事は非表示になってるだけで、
> 運転画面2から運転画面1を表示させる場合は、またShow()で表示させるって事ですよね?

そうですね。

> と言う事は、運転画面2でnew 運転画面1のインスタンスを作成するんですよね?

いやいや、インスタンスを生成するってことは、運転画面 1 が呼び出し側と同一になりませんよね?
仕様がどうなっているかに関わらず、よろしくないですよね?

> これだと、毎回運転画面2で運転画面1のインスタンスを作成してメモリを食い潰す事になりませんか?

そうですね。

1 番簡単な方法として、
 ・唯一なインスタンス変数として、運転画面 1 を公開する。(下策)
という方法があります。

面倒な方法は取りたくないのならば、
 ・運転画面 1 の this ポインタを渡す。(中策)
という方法があります。

# 被オーナならば、Owner を見るのも一興かも <- こら

面倒かもしれませんが、
 ・デリゲート などを使って通知する。(上策)
という方法があります。

その辺りは、調べてみてください。
http://santamartadotnet.hp.infoseek.co.jp/documents/vbdotnet/eventanddelegate.html
  • 題名: Re[6]: Formの表示方法
  • 著者: ヒデカズ
  • 日時: 2005/03/02 10:42:04
  • ID: 9453
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ヒデカズです。

じゃんぬねっとさんありがとうございます。

> 1 番簡単な方法として、
>  ・唯一なインスタンス変数として、運転画面 1 を公開する。(下策)
> という方法があります。
>
> 面倒な方法は取りたくないのならば、
>  ・運転画面 1 の this ポインタを渡す。(中策)
> という方法があります。
>
> # 被オーナならば、Owner を見るのも一興かも <- こら
>
> 面倒かもしれませんが、
>  ・デリゲート などを使って通知する。(上策)
> という方法があります。

下策でいきたい所ですが、上策なデリゲートを使用してみたいと思います。
まだデリゲートについて調べる事が多そうですが、とりあえず解決という事で!
ありがとうございました。

また、デリゲートで質問するかもしれませんがその時はよろしくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板