tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルメニューからの終了処理について
記事No6017
投稿日: 2007/08/06(Mon) 17:24
投稿者皐月
VB6.0からVB2005の移行をしています。いつもお世話になっています。

ツールのメニューエディターでから作成した終了項目をクリックすると
プログラムを終了するかの選択ウィンドウがでて終了できるようにしたい
と思い以下のソースをメニューがクリックされたときにコールしようと思っています。

************************************************************

Private Sub MainDisp_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

        If MsgBox("ソフトを終了しますか?", MsgBoxStyle.YesNo + MsgBoxStyle.Exclamation) = MsgBoxResult.Yes Then
            library.PortClose()
            library = Nothing
            End
        Else
            e.Cancel = True
        End If

***********************************************************

コールしようとする文章は

    Public Sub menu_file_end_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles menu_file_end.Click

        Call MainDisp_FormClosing(Me, New System.Windows.Forms.FormClosedEventArgs)
    End Sub


としているのですが、コールしようとしている側の引数がおかしいらしく
上手く動いてくれません。終了確認のウィンドウがでて終了ができるのであれば
今書かれているソースにはこだわりません。
どうかご教授お願いいたします。

[ツリー表示へ]
タイトルRe: メニューからの終了処理について
記事No6018
投稿日: 2007/08/06(Mon) 18:00
投稿者Hongliang
イベントハンドラ(イベントに関連付けられたメソッド)は、
自分で呼び出すもんじゃありません。
FormClosing は、フォームが閉じられるときに発生します。
ですから、メニューのクリックイベントでは単純にフォームを閉じればいいんです。
そうすればイベントハンドラである MainDisp_FormClosing メソッドは勝手に呼び出されます。

それから、FormClosing イベントのハンドラは、
イベント引数の CloseReason プロパティを確認して適切に判断すべきです。
まあ、適切に判断した結果 CloseReason の値に関わらず
必ず確認すると言う実装もあるかもしれませんが。

[ツリー表示へ]
タイトルRe^2: メニューからの終了処理について
記事No6036
投稿日: 2007/08/08(Wed) 15:49
投稿者皐月
返信ありがとうございます。
普通にMe.Closeの文章を挟んだら、FormClosingが呼び出されました。
FormUnloadが使えなくなってしまい戸惑ってしまい、初歩的な質問を
してしまって申し訳ありません。丁寧な解説ありがとうございます。

[ツリー表示へ]