- PR -

フォームの存在チェックについて

投稿者投稿内容
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2004-12-22 17:34
さかもとです。
ご存知の方がいらっしゃいましたら御教授頂ければと思います。

Winアプリ
VB.Net2003

現在 form1 form2 があります。
@ form1より
form2.Owner = Me
form2.TopMost = True
form2.Show() 
で form2を表示させます

A form2で処理をする

B処理結果をform1のテキストボックスへ戻す
(この時点でform1がアクティブでform2は表示されたまま)

ここまでは良いのですが
Cform1で更新処理時に form2 が表示されていたら form2の更新も行う
form2が非表示ならform2の更新処理も行わない

ということを実現したいのですが,
form1の更新時に,form2が存在しているか(表示されているか)
をどのように判断すればよいのでしょうか?
使用上,form1の更新時にはform2も表示されていること,そしてform2の表示/非表示によって分岐せざるを得ません。
visible でもActiveform でも取得出来ずでした。

form2から何かフラグでも渡せば出来るのでしょうが,スマートな方法が
あるのかもしれないと思い投稿しました。

宜しければ御教授頂けませんでしょうか。
お願い致します。

iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-12-22 19:01
if(form2 != null && form2.IsDisposed == false)

_________________
IEEE-CSDP 2004-2007
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2004-12-22 19:34
iStation様

ご返答ありがとうございます。
IsDisposedを使用して頑張ってみます。
結果は後日掲載させて頂きます。

取り急ぎお礼まで。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2004-12-24 10:04
おはようございます。さかもとと申します。
先日iStation様に教えていただいた方法で下記の件を対応してみましたが
理解不足の為もう少し質問をさせて頂ければと思います。

現在 form1 で
==============================================================
Private _form2 As form2

Private Sub btnA_Click.....

_form2 = New form2

_form2.form1bject() = Me

_form2.Owner = Me

_form2.TopMost = True

_form2.Show()
End Sub

Private Function FormChk()

_form2 As New form2  ★?★
'/■画面の存在判定
If Not (_form2 Is Nothing) And (_form2.IsDisposed = False) Then
Return True
Else
Return False
End If

End Function
============================================================

としていますが,★?★の部分でNewしておかないと「オブジェクトが・・・」と
なります。もちろんココでNewをしてしまうと既にForm2が表示されていても
いなくても判定はTrueになってしまうとは思うのですが,こうした場合は
どのタイミングでインスタンスを生成し保持(??)しておけばform2の存在
チェックが行えるのでしょうか?btnA_Click...の部分でNewしたform2の存在
を拾えればいいのですが。何か物凄く基本的な部分で躓いている気がして
いますが,ご指摘頂ければ幸いです。

宜しくお願い致します。

えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-12-24 10:23
引用:

さかもとさんの書き込み (2004-12-24 10:04) より:
If Not (_form2 Is Nothing) And (_form2.IsDisposed = False) Then
Return True
Else
Return False
End If


回答ではないですが、構文としては
---------------
If Not (_form2 Is Nothing) AndAlso (_form2.IsDisposed = False) Then
Return True
Else
Return False
End If
---------------
AndAlsoを使用したほうがよいかも。
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-12-24 11:45
That's it!
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2004-12-24 13:55
えんぞ@見習様,iStation様
ご返答ありがとうございます。

まず構文をAndAlsoに直し「基本的なこと」を見直した結果。
先程のサンプルで言えば
=========================
Private Function FormChk()

_form2 As New form2  ★?★
'/■画面の存在判定
If Not (_form2 Is Nothing) And (_form2.IsDisposed = False) Then
Return True
Else
Return False
End If

End Function
========================
のところを
========================
Private 【Shared】 Function FormChk()
///略////
End Function
=====================

とすればいいだけの話でした・・・。
お恥ずかしい限りです。

お手数をお掛けしました。
ありがとうございます。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-12-24 14:26
解決したのであれば...ですけど、本当の解決点なのかは疑問の余地が...

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