tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル FormClosing内でのButton1.PerformClick()について
投稿日: 2014/03/02(Sun) 18:13
投稿者OrientalMelody
いつもお世話になっております。

Windows7(32bit)上でVB2010により開発をしております。

FormオブジェクトのFormClosingイベント内でのButtonオブジェクトPerformClick()を
使用した場合の動作について、質問させていただきます。

以下のソースコードのように、画面を閉じるときに、

(A)入力があった場合m_bChangeFlg=Trueになっているので、cmdSave.PerformClick()を実行し、閉じる。
(B)入力がなかった場合はm_bChangeFlgはそのまま(=False)なので、そのまま何もせずに、閉じる。

のような処理をしようとしているのですが、
(A)の場合、cmdSave内のClickイベントが発生し、データをファイル保存後、
Form1モジュールレベル変数のm_bChangeFlg=Falseにセットし、FormClosingイベントにもどります。

その後、If m_bChangeFlg Then 内には入らずに FormClosingイベントが終わるのは良いのですが、
画面が閉じられません。

もちろん、e.Cancel=Falseのままです。

cmdSave.Clickイベント内のファイル保存ルーチンを外し、
単純に m_bChangeFlg=False だけにしても同じでした。

Private m_bChangeFlg as Boolean 'モジュール宣言部で宣言。

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If m_bChangeFlg Then
            Select Case MsgBox("データが変更されています。保存しますか?", vbYesNoCancel, Me.Text)
                Case vbYes
                    cmdSave.PerformClick()
                    If m_bChangeFlg Then
                        e.Cancel = True
                       Exit Sub
                    End If
                Case vbNo
                Case vbCancel
                    e.Cancel = True
                    Exit Sub
            End Select
        End If

    End Sub



FormClosingイベント内では、cmdSave.PerformClick()等のメソッドを使用するのは
問題があるのでしょうか?

宜しくお願いいたします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。