学生の人が質問するときは学年を書いてくれると回答者も優しい気持ちになれる気がします。
※マルチポストでの質問はマルチポスト先を明記し、解決時には具体的な解決方法とともに報告をしてください。
テキストの変更の有無で、下記のような処理をする
フォーム右上の[×]ボタンのコードがあります。
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のメンバではないとのエラーメッセージが出ます。
どのようにすればいいか教えていただけると助かります。
よろしくお願いします。
タグ:
Closing イベントの引数 e は FormClosingEventArgs
Click イベントの引数 e は EventArgs
用意されている機能が違います。
>フォーム右上の[×]ボタンと同じ処理をするコントロール
Closing イベントにコードを書いておいて、
ボタンの Click イベントでは、Me.Close
とだけ書いておけば、Closing イベントが
実行されるのでは?
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard13.htm
ここの 5.プログラムを終了させる方法 の図がわかりやすいです。
るしぇさんの言うとおりMe.Closeでいいでしょう。
るしぇさん、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が閉じる処理となります。
フォーム右上の[×]ボタンのコードを見にいって
いるみたいです。
このコードを見にいかないようにしたいのですが、
どのようにすればいいでしょうか?
すみませんが、よろしくお願いします。
Me.CloseでFormClosingイベントに飛んで
終了チェックするからButton1_Clickの
> Dim ret As MsgBoxResult
> If TextBox1.Modified Then
> ret = MsgBox("テキストが変更されています。このまま終了しますか?", MsgBoxStyle.YesNo)
> If ret = MsgBoxResult.Yes Then
> End If
この部分は要らないのでは?
もし他の処理で要るなら
フラグを立てればいいと思う。
>>4
temp さんご紹介のこのサイトの記事にそのままのコードが載ってます。
>5.プログラムを終了させる方法
の部分を読むようにしてください。
るしぇさん・tempさんのアドバイス
通りにした所、解決しました!!
ありがとうございました。
>>7
芝居忠辰。
三国志の武将。
まぁ、がんがれ。
もう、来ないがな。