DOBON.NET DOBON.NETプログラミング掲示板過去ログ

バルーンの強制非表示の仕方

環境/言語:[環境:Windows XP Professional/使用言語 VB2005/.NET Framework 2.0]
分類:[.NET]

NotifyIcon(System.Windows.Form)の「ShowBalloonTip」メソッドにて表示したバルーンを強制的に非表示にする方法を教えて下さい。

例えば、VB2005にて「Windowsアプリケーション」を作成し、デフォルトのフォーム「Form1」のデザイン画面で以下の3つの部品を貼り付けます。

 (1) NotifyIcon(System.Windows.Form)
 (2) Button(System.Windows.Form)
 (3) Button(System.Windows.Form)

また、それぞれの名前は、以下の様にしたとします。

 (1) NotifyIcon1
 (2) Button1
 (3) Button2

その時に、Form1のコードを下記の様に変更して、

 ・Button1が押された時にバルーンを60秒表示する。
 ・Button2が押された時は、Button1で表示したバルーンが
  60秒経っていなくても、非表示にする。

と言う動作をさせたいのですが、Button2が押された時の処理(Button2_Clickの中身)の記述方法がわかりません。

-----Form1コード ここから-----
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
NotifyIcon1.ShowBalloonTip(60000, "テスト1", "ボタン1が押されました", ToolTipIcon.Info)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' ここにButton1で表示したバルーンが60秒経っていなくても、非表示にする処理を記述したい
End Sub
End Class
-----Form1コード ここまで-----

お手数をお掛け致しますが、ご教授の程、よろしくお願い致します。
■No19014に返信(えいご茶漬けさんの記事)
> NotifyIcon(System.Windows.Form)の「ShowBalloonTip」メソッドにて表示したバルーンを強制的に非表示にする方法を教えて下さい。

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=281450&SiteID=1

によると、

NotifyIcon1.Visible = False
NotifyIcon1.Visible = True

で消えるとのことです。
> http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=281450&SiteID=1
>
> によると、
>
> NotifyIcon1.Visible = False
> NotifyIcon1.Visible = True

無事、解決しました。ありがとうございました。

経過は、下記の通りです。

(1) Windows XP Professionalの場合、「Button2_Click」メソッドに
  ご教授頂いたコードを記載しただけでは、タスクトレイのアイコンは
  消えますが、バルーンは10秒位表示したままでした。
  (他のWindowsXPマシンでテストしていないので、マシン環境の
  問題かもしれませんが・・・)
(2) タイマーで同じコードを実行すると、無事、バルーンだけ消えました。
(3) そこで、「Timer」を追加し、以下の様なコードにするとButton2を
  押した場合でも、無事、バルーンだけ消えました。
(4) Windows 2000 Professionalの場合は、「Button2_Click」メソッドに
  ご教授頂いたコードを記載しただけで、無事、バルーンだけ消えました。

なぜ、(3) の様に記述すると期待する動作になり、(1) の記述だと期待した動作にならないのか解決出来ませんでしたが、今回の問題自体は解決致しました。

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

-----Form1コード ここから-----
Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    NotifyIcon1.ShowBalloonTip(60000, "テスト1", "ボタン1が押されました", ToolTipIcon.Info)
  End Sub

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    'NotifyIcon1.Visible = False
    'NotifyIcon1.Visible = True

    Timer1.Enabled = True
  End Sub

  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    NotifyIcon1.Visible = False
    NotifyIcon1.Visible = True

    Timer1.Enabled = False
  End Sub
End Class
-----Form1コード ここまで-----
解決済み!
■No19025に返信(えいご茶漬けさんの記事)
詳しいご報告ありがとうございました。

私もちょっと試してみました。私もXP Proなのですが、えいご茶漬けさんがおっしゃるように、アイコンが消えてまた表示されるまでに時間がかかり、その間はバルーンが表示されたままでした。

えいご茶漬けさんがうまくいったというタイマーを使った方法も試してみましたが、確かにうまくいくときはすぐに消えるのですが、うまくいかないときもありますね(私の場合、うまくいくほうがむしろまれです)。

暇なときにもう少し調べてみたいと思いますが、なかなか難しそうですね。
解決済み!
こちらこそ、お返事を頂き、ありがとうございました。

また、タイマーを使った方法でも期待通りに動作する方がまれとのご連絡、重ねてありがとうございます。
私のPCでは、期待通りの動作を続けていたので、当座、解決したと考えていましたが、もう少し調査が必要みたいですね。

私の方も、何か進展しましたら、ご報告させて頂きます。

取り急ぎ、お礼まで失礼致します。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板