- PR -

Showで複数画面を表示し重複表示を抑止したいです。

1
投稿者投稿内容
M@tch
会議室デビュー日: 2005/10/01
投稿数: 13
投稿日時: 2006-01-03 11:41
皆さまお疲れ様です。
VB.NET2003開発で、機能が異なる複数のDLL上画面をマルチで表示したく
「Show」を使用し表示しているのですが、メニューから同じ機能の画面
表示ボタンを押下すると重複して起動してしまいます。

現在、表示している画面を重複表示させないようにする良い方法は
ないでしょうか?「Public Shared AAA As Int16」などでフラグ化して
判断するしかないのでしょうか?

初心者的な質問で申し訳ありませんが、ご教授の程よろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-03 12:13
現在の実装が見えないので最良解は出せませんが、いくつかの方法がありますよね。
メニューがすべてを知っているべきという点は合ってます。
  1. ご存知の通りフラグを使う (VB.NET なら Static を使ってもいい)
    でも "フラグ" なら Int16 ではなく、Boolean 型を使うべきでしょう。
  2. Form のインスタンスの有効範囲を Private にして、インスタンスがあるかどうか見る
    スコープが広くなるので、何かと有害。
  3. メニューをオーナーとして、OwnedForm で検索する
    そのままですね。
  4. メニュー側で Form のコレクションを作っておいて一元管理する
    フラグと一緒なのですが、Form の数が多くなっても修正は容易です。
    1. より遥かにお勧めできます
私ならば、4. ですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
M@tch
会議室デビュー日: 2005/10/01
投稿数: 13
投稿日時: 2006-01-03 15:13
じゃんぬねっとさん、ご教授ありがとうございます。

質問内容を簡略化しており申し訳ありませんでした。
MainMenuとSubMenuの関係は同一DLL(A.DLL)内でMDIFormの
親子関係で構成されております。

サブメニュー(SubForm)からある処理画面(他のDLL(B.DLL))
を「Show」で開き、さらに他の処理画面(C.DLL上にある画面)を
呼出して処理をおこなえるように実装しようと考えております。

この場合、サブメニューにをアクティブにして再度、同じ処理ボタンを
押下した場合、同一処理画面が開いてしまうので、重複して開いて
しまうことを抑止したいと考えております。

頂きましたご教授内容
「メニュー側で Form のコレクションを作っておいて一元管理する
 フラグと一緒なのですが、Form の数が多くなっても修正は容易です。」
から「ArrayList」「Specialized.NameValueCollection」「Hashtable」
等を活用しコレクションを定義してフォームを管理するということ
でよろしいでしょうか?
よろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-03 15:45
引用:

M@tchさんの書き込み (2006-01-03 15:13) より:

質問内容を簡略化しており申し訳ありませんでした。
MainMenuとSubMenuの関係は同一DLL(A.DLL)内でMDIFormの親子関係で構成されております。


Menu なら、Menu のチェックで判断するっていうのも手軽ですね。
起動したらチェックしておくということで、見た目的にも親切です。

ただ、MDI ということで「メニューのマージの仕方」によっては、泥臭くなります。

引用:

「ArrayList」「Specialized.NameValueCollection」「Hashtable」
等を活用しコレクションを定義してフォームを管理するということでよろしいでしょうか?


ArrayList か Hashtable でいいと思います。
保守を考えて、"名前" でどうこうするより "インスタンス" の参照で判別しましょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
M@tch
会議室デビュー日: 2005/10/01
投稿数: 13
投稿日時: 2006-01-03 20:25
じゃんぬねっとさん、再びご返信ありがとうございました。
ご教授いただいた内容で、コーディング致します。
この度は、ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-01-03 21:54
ご参考
http://quick-tips.hp.infoseek.co.jp/vs.net/sample/index.html
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-04 00:38
ややこしい管理体制... とはいっても前提が単一のようですが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)