2016-04-27 31 views
-2

私は、ユーザーがダイアログを開くと時間がユーザーに期限切れであることを放置すると、ユーザーが実行するアクティビティのないいくつかの時間後に、そのアプリケーションがダイアログボックスを自動的に閉じる方法は?

SearchCustomer.ShowDialog() 

のようにいくつかのダイアログボックスを持って自動ログアウトを持っているのWinFormアプリケーションを持っています自動的にログアウトされますが、そのダイアログボックスは開いたままなので、誰でもログアウトしたユーザでもそのダイアログを使用できます。

メインフォームからこれらのダイアログボックスを閉じる方法はありますか?

編集: は異なる方法で開かれ、別のダイアログボックスがあります

AddCustomer.Show() 
AddCustomer.BringToFront() 

編集2ソリューションjmcilhinneyの回答に基づいて

For Each openForm In openForms 

    Dim H1 As Integer = openForm.GetHashCode() 
    Dim H2 As Integer = Me.GetHashCode() 
    If H1 <> H2 Then 'No igual 
     openForm.Close() 
    End If 
Next 
+0

これは単なるダイアログであるか、他のダイアログではこのような状況がありますか? – Steve

+1

'SearchCustomer.Close'はそのフォームを閉じます –

+0

@スティーブはい別の方法で開かれている別のものがあります、私は主な質問にコードを追加します、ありがとう、お読みください。 –

答えて

2

私がテストしていませんが、私は思うだろうあなたはこれらの行に沿って何かをすることができるはずです:

Dim openForms = My.Application.OpenForms.Cast(Of Form)().ToArray() 

For Each openForm In openForms 
    openForm.Close() 
Next 
+0

ダイアログボックスを閉じますが、メインフォームも閉じます。 –

+0

したがって、ループ内で、 'openForm'がメインフォームであるかどうかをテストし、そうでない場合にのみ閉じます。 – jmcilhinney

+0

はい、私はどのように把握しようとしています。私はメインのフォームを識別するのに役立ついくつかのプロパティを探していますが、私は何かのようにすることはできますか? –

0

ここにオプションがあります。

オーナー権限でフォームを開きます。

AddCustomer.Show(Me) 
    'This open the form and gives the referring form ownership. 
    'It Also gives focus to the child form, keeping it on top of the referring form 

参照フォームが閉じると、子フォームも閉じます。

+0

面白いですが、私が必要とするものではありません。メインフォームが開いたままで、ユーザーがログアウトしたときにすべての子フォームを閉じる必要があります。とにかく、私はこれを解決しました。とにかくありがとう。 –

関連する問題