フォーム右上の[×]ボタン

タグの編集
投稿者 ロッキー  () 投稿日時 2008/7/30 16:56:00
テキストの変更の有無で、下記のような処理をする 
フォーム右上の[×]ボタンのコードがあります。 
 
 Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing 
        Dim ret As MsgBoxResult 
        If TextBox1.Modified Then 
        ret = MsgBox("テキストが変更されています。このまま終了しますか?", _ 
                                                     MsgBoxStyle.YesNo, "終了") 
        If ret <> MsgBoxResult.Yes Then e.Cancel = True 
        End If 
    End Sub 
 
このフォーム右上の[×]ボタンと同じ処理をするコントロールで[終了]ボタンを作りたいのですが、e.Cancelの部分でSystem.EventArgsのメンバではないとのエラーメッセージが出ます。 
どのようにすればいいか教えていただけると助かります。 
よろしくお願いします。
投稿者 るしぇ  () 投稿日時 2008/7/30 18:00:00
Closing イベントの引数 e は FormClosingEventArgs 
Click イベントの引数 e は EventArgs 
用意されている機能が違います。 
 
>フォーム右上の[×]ボタンと同じ処理をするコントロール 
Closing イベントにコードを書いておいて、 
ボタンの Click イベントでは、Me.Close 
とだけ書いておけば、Closing イベントが 
実行されるのでは?
投稿者 temp  () 投稿日時 2008/7/31 03:07:00
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard13.htm 
ここの 5.プログラムを終了させる方法 の図がわかりやすいです。 
るしぇさんの言うとおりMe.Closeでいいでしょう。
投稿者 ロッキー  () 投稿日時 2008/7/31 11:08:00
るしぇさん、tempさん 
アドバイスありがとうございます。 
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
        Dim ret As MsgBoxResult 
        If TextBox1.Modified Then 
            ret = MsgBox("テキストが変更されています。このまま終了しますか?", MsgBoxStyle.YesNo) 
            If ret = MsgBoxResult.Yes Then Me.Close() 
        End If 
    End Sub 
 
上記のようにボタンを追加してみました。 
Yesを押下するとまたMsgBoxが出てきて、もう一度 
Yesを押下するとformが閉じる処理となります。 
フォーム右上の[×]ボタンのコードを見にいって 
いるみたいです。 
このコードを見にいかないようにしたいのですが、 
どのようにすればいいでしょうか? 
すみませんが、よろしくお願いします。
投稿者 temp  () 投稿日時 2008/7/31 15:59:00
Me.CloseでFormClosingイベントに飛んで 
終了チェックするからButton1_Clickの 
> Dim ret As MsgBoxResult  
> If TextBox1.Modified Then  
> ret = MsgBox("テキストが変更されています。このまま終了しますか?", MsgBoxStyle.YesNo)  
> If ret = MsgBoxResult.Yes Then 
> End If 
この部分は要らないのでは? 
 
もし他の処理で要るなら 
フラグを立てればいいと思う。
投稿者 るしぇ  () 投稿日時 2008/7/31 19:04:00
>>4 
temp さんご紹介のこのサイトの記事にそのままのコードが載ってます。 
>5.プログラムを終了させる方法 
の部分を読むようにしてください。
投稿者 ロッキー  () 投稿日時 2008/8/1 06:45:00
るしぇさん・tempさんのアドバイス 
通りにした所、解決しました!! 
 
ありがとうございました。