tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル複数の別のフォームから一つのフォームを表示
記事No4964
投稿日: 2007/02/09(Fri) 10:50
投稿者おかっぴきA
はじめまして。

【使用 OS】 windowsXP
【VBの種類】 Microsoft Visual Basic .NET

【質問内容】
Form2を表示させるためのボタンがついた表示用フォームが
複数あります。(Form1_1、1_2…)
一つの表示用フォームからForm2を表示させている最中に
他の表示用フォームのボタンを押すとForm2が複数表示されてしまいます。
Form2を単独表示させておくためにはどうすればよいでしょうか。

※Form1から表示用フォーム(Form1_1、1_2…)のどれか一つを
  モーダルで表示させています。
※表示用フォームは、それぞれ同時に表示されることはありません。
※Form2の表示はこちらのサイトの
  SNo.085の3「Form1 から Form2 をモードレスで複数表示されないように表示する」
  を参考に、表示しています。

まだVB初心者なので、簡単なことを聞いているかもしれませんが、
ご教授よろしくお願いします。

[ツリー表示へ]
タイトルRe: 複数の別のフォームから一つのフォームを表示
記事No4966
投稿日: 2007/02/11(Sun) 01:13
投稿者るしぇ
>他の表示用フォームのボタンを押すとForm2が複数表示されてしまいます。
それぞれの表示用フォームが、自分の中に1つずつ Form2 の実体(インスタンス)
を管理する変数(f2)を持ってるんでしょ?表示用フォームの数だけ表示される
のが当然の結果ですよね?

全ての表示用フォームが共通して1つの変数で1つの Form2 の実体(インスタンス)
を管理すればいいわけです。
[VB6.0]の時代なら Module にグローバルな変数や関数を作って…って
なるけど、[VB.NET]なら Class Form2 の中に1つのインスタンスを返す
関数を作ってやるほうが便利かな?
※Class の中の関数は、一般的にはインスタンスを生成した後でしか
利用できませんので Shared 宣言して共有化しておきます。
[DOBON.NET Tips フォームが一つしか表示されないようにする]
http://dobon.net/vb/dotnet/form/singleform.html

自動で書かれるコードの
>Public Sub New()
を Private にしてしまえば Form2 を使いたいときは
Instance() プロパティを使用するしかない状態にもできます。

[ツリー表示へ]
タイトルRe^2: 複数の別のフォームから一つのフォームを表示
記事No4969
投稿日: 2007/02/11(Sun) 18:23
投稿者おかっぴきA
> 全ての表示用フォームが共通して1つの変数で1つの Form2 の実体(インスタンス)
> を管理すればいいわけです。

ありがとうございます。
記載のサイトのサンプルコードも参考にさせていただきました。

> [DOBON.NET Tips フォームが一つしか表示されないようにする]
> http://dobon.net/vb/dotnet/form/singleform.html

無事動作することができました。
るしぇサン、本当にありがとうございました。

[ツリー表示へ]