投稿者 hori  (社会人) 投稿日時 2013/5/2 13:41:32
かなり初歩的な内容と思うのですが
僕なりに調べましたけれど分からないのでご教授ください。

Form を複数開けるようにしていると無限ループ状態になる可能性があるので
少なくともテーブルに書き込みできる Form の2重起動は止めたいと思います。

で、以下のようなコードを書きました。
本当は、ファンクションプロシージャの中の [処理内容 = "終了"] の部分で
終わらせたいのですが、どう書けばいいのか分かりません。

このままですと終わるのは終るのですが、一瞬 Form が開いて
画面がチラっとするので気分がイマイチです。

どなた様か、すんなり終われる方法を是非ともお教えください。よろしくお願いいたします。

------------------

 Public Overloads Function ShowDialog(ByVal Owner As IWin32Window ) As DialogResult
                                                                          
        Dim a As String = "1"
        For Each f As Form In Application.OpenForms
            If TypeOf f Is Form1 Then
                a = "2"
                Exit For
            End If
        Next

        If a = "2" Then
            MsgBox("『本処理』は既に起動中です。本プロセスは終了します。")
            処理内容 = "終了"
        End If

    Return Me.ShowDialog()

End Function

 Private Sub Form1_Load(ByVal sender As System.Object, _
                                 ByVal e As System.EventArgs) Handles MyBase.Load

        If 処理内容 = "終了" Then
            Me.DialogResult = DialogResult.No
            Me.Close()
            Exit Sub
        End If

End Sub