Visual Basic 中学校 掲示板2

学生の人が質問するときは学年を書いてくれると回答者も優しい気持ちになれる気がします。
※マルチポストでの質問はマルチポスト先を明記し、解決時には具体的な解決方法とともに報告をしてください。

スレッド全件表示

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

  • ロッキー
  • 投稿日:2008/07/30 07:56

テキストの変更の有無で、下記のような処理をする
フォーム右上の[×]ボタンのコードがあります。

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のメンバではないとのエラーメッセージが出ます。
どのようにすればいいか教えていただけると助かります。
よろしくお願いします。

  • コメント
  • トラックバックURL : http://rucio.bbs.coocan.jp/bbs/trackback.php?id=494
  • 1.るしぇ
  • 投稿日:2008/07/30 09:00

Closing イベントの引数 e は FormClosingEventArgs
Click イベントの引数 e は EventArgs
用意されている機能が違います。

>フォーム右上の[×]ボタンと同じ処理をするコントロール
Closing イベントにコードを書いておいて、
ボタンの Click イベントでは、Me.Close
とだけ書いておけば、Closing イベントが
実行されるのでは?

  • 2.temp
  • 投稿日:2008/07/30 18:07

http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard13.htm
ここの 5.プログラムを終了させる方法 の図がわかりやすいです。
るしぇさんの言うとおりMe.Closeでいいでしょう。

  • 4.ロッキー
  • 投稿日:2008/07/31 02:08

るしぇさん、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が閉じる処理となります。
フォーム右上の[×]ボタンのコードを見にいって
いるみたいです。
このコードを見にいかないようにしたいのですが、
どのようにすればいいでしょうか?
すみませんが、よろしくお願いします。

  • 5.temp
  • 投稿日:2008/07/31 06:59

Me.CloseでFormClosingイベントに飛んで
終了チェックするからButton1_Clickの
> Dim ret As MsgBoxResult
> If TextBox1.Modified Then
> ret = MsgBox("テキストが変更されています。このまま終了しますか?", MsgBoxStyle.YesNo)
> If ret = MsgBoxResult.Yes Then
> End If
この部分は要らないのでは?

もし他の処理で要るなら
フラグを立てればいいと思う。

  • 6.るしぇ
  • 投稿日:2008/07/31 10:04

>>4
temp さんご紹介のこのサイトの記事にそのままのコードが載ってます。
>5.プログラムを終了させる方法
の部分を読むようにしてください。

  • 7.ロッキー
  • 投稿日:2008/07/31 21:45

るしぇさん・tempさんのアドバイス
通りにした所、解決しました!!

ありがとうございました。

  • 8.reo
  • 投稿日:2008/07/31 22:54

>>7
芝居忠辰。
三国志の武将。
まぁ、がんがれ。
もう、来ないがな。

タグ:

おすすめサービス

InterPot(インターポット) ドメイン@nifty ニフティクリップ アプラグ