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

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

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

フォーム 2重起動


(過去ログ 1 を表示中)

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

■234 / inTopicNo.1)  フォーム 2重起動
  
□投稿者/ かるあ 二等兵(2回)-(2005/03/18(Fri) 17:56:41)

分類:[VB.NET] 


分類:[VB.NET] 

こんにちわ。

フォームの事でお聞きします。
フォームの2重起動をしない為にはどうすればよいのでしょうか?

ShowDialogを使用すると、その画面を閉じないと前の画面を操作できません。

処理としては

Form1からForm2を呼び出す。
Form2が開いていた場合はForm2を最前面にするような処理がしたいです。
"Form2が開いている場合"という処理はどうすればよいのでしょう?

↓のページが近いのかなと思うのですが
http://anetm.com/dev/tools/vbdotnet/112213.htm
↑のサンプルはアプリケーションの重複起動なので、質問からズレている気もしますが・・・。

ご教授お願いします。m(_ _)m

#ShowDialogでいいと思うんだけどなぁ・・・。その画面を閉じてから処理を
すればいいのに・・・。(-。-*)ブツブツ

0
引用返信 編集キー/
■235 / inTopicNo.2)  Re[1]: フォーム 2重起動
□投稿者/ よねKEN 二等兵(1回)-(2005/03/19(Sat) 05:08:41)

分類:[VB.NET] 

No234に返信(かるあさんの記事)
> Form1からForm2を呼び出す。
> Form2が開いていた場合はForm2を最前面にするような処理がしたいです。
> "Form2が開いている場合"という処理はどうすればよいのでしょう?

1.Form2のコンストラクタのアクセシビリティをPublicからPrivateに変更
   Public Sub New() → Private Sub New()

2.Form2に下記のコードを追加
Protected Shared m_instance As Form2

Public Shared ReadOnly Property Instance() As Form2
Get
If m_instance Is Nothing OrElse m_instance.IsDisposed Then
m_instance = New Form2
End If
Return m_instance
End Get
End Property

3.Form2の画面の状態に関わらず、下記で表示、または、アクティブにする。
  Form2.Instance.Show()
Form2.Instance.Activate()

というような方法はどうでしょうか?(いわゆるシングルトンパターン)
開けるForm2は唯一つでよければ、こういう方法があります。

あるいは、もっと素直なやり方としては、
Form2のインスタンスはForm1のクラス変数で保持しておいて、
Form2を表示した後、Form2を閉じるときは、
Closeで閉じるのではなく、Hideしておくだけにして、
一回目表示するときも、前面に持っていくだけのときも、
どちらの場合もShowしてActivateメソッドを呼び出せばOKです。

Form2自身で勝手にCloseされないようにしておけば、
開かれているか?という確認は不要ですよね。



0
引用返信 編集キー/
■242 / inTopicNo.3)  Re[2]: フォーム 2重起動
□投稿者/ かるあ 二等兵(3回)-(2005/03/21(Mon) 16:49:49)

分類:[VB.NET] 

おつかれさまです。

わかりやすい説明ありがとうございました。m(_ _ )m
説明通りやってみたらOKでした。

#プロパティか何かで複数のは表示はしないとかそういう設定が
あればいいのになぁ。



解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -