- - PR -
タスクトレイからのフォームの表示・非表示切り替えについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-28 19:13
OS:WindowsXP SP1
言語:Microsoft Visual C# .NET Framework 1.1 お世話になっております。 C#.NETのWindowsアプリケーションでフォームの表示・非表示を タスクトレイのアイコンより行うプログラムを作成しています。 現在はNotifyIconコントロールを使用しタスクトレイにアイコンの追加、 ContextMenuコントロールを使いフォーム表示・非表示の制御を行っています。 ContextMenuの処理 ・表示時 フォーム.WindowState = Normal フォーム.ShowInTaskbar = true ・非表示時 フォーム.WindowState = Minimized フォーム.ShowInTaskbar = false 上記処理を行い、希望する動作はしているのですが 非表示時にAlt+Tabのアプリケーション一覧より選択すると フォームが表示されてしまいます。 Alt+Tabのアプリケーション一覧に表示させないために フォームのFormBorderStyleにFixedToolWindow(あるいはSizableToolWindow) を設定してみたのですが今度は非表示時にデスクトップ左下に最小化された フォームが表示されてしまいます。 対応策としてフォーム.FormBorderStyle = FixedToolWindow(SizableToolWindow) の状態でContextMenuの処理を ・表示時 フォーム.ShowInTaskbar = true フォーム.Opacity = 100 フォーム.WindowState = Normal ・非表示時 フォーム.WindowState = Minimized フォーム.Opacity = 0 フォーム.ShowInTaskbar = false とし、Alt+Tabでも選択できず非表示時にデスクトップに表示されない状態 にはなったのですが、もっと良い方法があるのではと思い投稿させていただきました。 別の方法で上記のような処理を実現なさっている方がおられましたら その方法をお教え願えないでしょうか。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-10-29 01:16
南部です。
タスクマネージャのような挙動(最小化時に隠すオプション) を希望しているのかと思いますが(違っていたらすみません)。 1.初期状態のフォームを作成 2.NotifyIcon追加 3.最小化時に隠す処理 FormのDeactivateイベントに
のようなハンドラを追加。 4.NotifyIconダブルクリックで表示 notifyIconのDoubleClickイベントに
のようなハンドラ追加。 ContextMenuからも同様です。 動作環境は Window Server 2003 .NET Framework 1.1 SP1 です。 ※WindowsXPでは、挙動が異なるかもしれません。 | ||||||||
|
投稿日時: 2004-10-29 10:24
nanbuさん返信ありがとうございます。
まさにこの動きです。 わたしもShowInTaskbarの設定前にHideをおいて試した時に Alt+Tabから消えなかったので使えないものだと 思っていたのですがわたしの使い方が悪かったのですね。。。 不恰好なソースを書かずに済み助かりました。 ありがとうございました。 |
1