タイトル : 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()等のメソッドを使用するのは 問題があるのでしょうか? 宜しくお願いいたします。 |