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

タスクトレイにアイコンを表示したがソースがすっきりしない

環境/言語:[/環境 XP 使用言語 VB.NET]
分類:[.NET]

常駐物のアプリを作成する際に最小化時に
タスクトレイにアイコンを表示して、アイコンをダブルクリックすると
元のサイズに戻る物を作成したのですが、今ひとつソースがすっきりせず
悩んでいます。
メインとなるフォームのShowInTaskbarはfalseにし
WindowStateはMinimizedとし
クラス内の共有宣言として
Dim WithEvents notifyIcon As System.Windows.Forms.NotifyIcon
を行い、フォームのロード時に
Me.notifyIcon = New System.Windows.Forms.NotifyIcon(Me.components)
Me.notifyIcon.Icon = Me.Icon
notifyIcon.Text = "****"
notifyIcon.Visible = True
として、起動時にはタスクトレイにアイコンだけが表示され
アイコンのダブルクリックイベントで
notifyIcon.Visible = False
Me.WindowState = FormWindowState.Normal
Me.Show()
として元の状態に戻し
また、最小化を行う際には最小化用のボタンを作って
(この部分が思っている動作と違うのですが後で書きます)
Me.Hide()
notifyIcon.Visible = True
として、フォームを隠してからアイコンをタスクトレイに表示しています。

もう少しソースの整理を行いたいのですが皆様はどのように実装されていますか?
また、最小化してアイコン化する際に本当は
MinimizeBox(ウィンドウの右上にある最小化ボタン)を使用したかったのですが
上手く出来ませんでした。

こちらで紹介されている”フォームを表示させずにトレイアイコンを表示する”を
参考にしようとしたのですがクリエイトパラメーターの取り扱いが理解できずに
挫折しております^^;

皆様の意見を伺えれば幸いです
> また、最小化してアイコン化する際に本当は
> MinimizeBox(ウィンドウの右上にある最小化ボタン)を使用したかったのですが
> 上手く出来ませんでした。

どのように上手くできなかったのでしょうか?
普通に行えばできるような気がするのですが…。
VBは専門外なのですが、(^^;一応サンプルみたいなものを
UPしておきます。
(この記事にはファイル"TaskBarTestApp.zip"が添付されていましたが、削除されました。)
> どのように上手くできなかったのでしょうか?
> 普通に行えばできるような気がするのですが…。
> VBは専門外なのですが、(^^;一応サンプルみたいなものを
> UPしておきます。

返信有難うございます。
上手く出来なかった部分なのですが、サンプルを拝見し問題点が分かりました
今まではフォームの”SizeChanged”イベントで
タスクバーの表示とアイコン表示を制御しようとしていたのですが
”Layout”というイベントがあるのですね^^;不勉強でした

(見当違いに制御しようと躍起になっていた事が分かりました)

掲示頂いたソースを元に修正していきたいと存じます。m(_'_)m
修正時に気がついた点ですが
フォームの”ShowInTaskbar”のプロパティをFalseにすると
起動時に最小化表示しても小さなウィンドウがデスクトップ上に
表示されるようです。(これも不勉強で知りませんでした^^;)

修正は頂いたソースと同じ方法で行いました。
またそのほか気がついた点をまとめますと
・ShowInTaskbarは規定値のままでOK
・WindowStateはLoadイベントでMinimizedすればOK
・タスクトレイにアイコン化して表示するのは
 ”Layout”イベントで拾って制御する事が出来る
上記の3点に注意して修正できました 

一般人様、ご教授有難うございました。
すみません 解決済みにするのを忘れておりました
解決済み!

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