サンプルプログラムの準備
NotifyIconを実装するには、以下の手順を踏みます。
- 適当なIconファイルを用意
NotifyIconをタスクトレイに表示するために、Iconが必要です。適当なIconファイルを準備しておいて下さい。 - プロジェクトにFormを1つ追加する。
プロジェクトを新規作成すると勝手に作られるForm1.csはそのままにして、NofityIconを実装するフォームを1つ追加します。サンプルでは、FormStart.csという名前にしました。このフォームがNotifyIconを実装するフォームになります。FormStart.csフォーム自体は初期状態では表示しないようにして、タスクトレイ内のNotifyIconのみを表示するようにしていきます。 - ContextMenuStripをFormStartフォームに貼り付ける。
先に追加したサンプル用フォーム「FormStart.cs」にContextMenuStripを追加します。コンテキストメニューには、メニュー項目を追加しておきます。特に、プログラムを終了できる「終了」をメニューで選べるようにしておくと便利です。ContectMenuStripのイベント設定でこれを選ばれたら、Application.Exitを呼び出すようにしておきます。
NotifyIconの設定
次に、FormStartフォーム内に貼り付けたNotifyIconのプロパティを設定していきます。
NotifyIconのプロパティの最低限の設定項目は以下のとおりです。
- Iconプロパティ
この項目には、準備しておいたIconファイルを指定してください。 - ContextMenuStripプロパティ
これも前述の章で準備しておいたContextMenuStripを指定して下さい。
Program.csの編集
ここまできたら、最後に、FormStartフォームを表示しないで、NotifyIconだけをタスクバーに表示するように、Program.csファイルを変更します。このファイルには通常以下のような記述があると思います。
static class Program { ////// アプリケーションのメイン エントリ ポイントです。 /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FormMain()); } }
これを、以下のように修正します。具体的には、上のソースの11行目を下のソースの11~14行目のように置き換えます。
static class Program { ////// アプリケーションのメイン エントリ ポイントです。 /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); using (FormStart frm = new FormStart()) { Application.Run(); } } }
これで、デフォルトのForm1.csはそのままメイン画面などの用途で使用し、新しく追加したFormStart.csがNotifyIconを表示します。NotifyIconで設定したContectMenuStripの項目が選択された場合のイベントは、FormStart.csで処理するようにします。
実行してみる
ここでプログラムを実行してみてください。タスクトレイに以下のように自分で設定したアイコンが出るはずです。
このアイコンを右クリックすると、コンテキストメニューが表示されます。
いくつかのチューニング
アイコンが消えない現象
このままですと、プログラムが終了する際に、タスクトレイにアイコンが残ったりしますので、その場合は、コンテキストメニューの「終了」などが選択された時に、以下のコードを入れておきます。3行目のコードがそれです。
private void ExitToolStripMenuItem_Click(object sender, EventArgs e) { this.notifyIcon1.Visible = false; Application.Exit(); }
バルーンを表示する
バルーンを表示させたい場合は、以下のようなコードを実行します。
private void BaloonToolStripMenuItem_Click(object sender, EventArgs e) { this.notifyIcon1.BalloonTipTitle = "お知らせ"; this.notifyIcon1.BalloonTipIcon = ToolTipIcon.Info; this.notifyIcon1.BalloonTipText = "以下の設定を確認してください。\r\nファイル-オプション設定"; this.notifyIcon1.ShowBalloonTip(10000); }
- AmazonFireTVをUSBメモリに録画する方法
- 応用プログラミング演習Ⅰのヒント
- さくらのVPSのubuntuにLAMP環境をインストール
- WEBサイトHowTo
- エレクトロハーモニクス
- 漢字書き順表示WEB
- Windows11 削除できないファイル・フォルダを削除
- STM32 Nucleo Boardで電子サイコロ
- STM32 Nucleo BoardでGPIO
- STM32 Nucleo BoardでLED点滅
- STM32F103でマイコン遊び
- windows11のエクスプローラのクイックアクセスを復活させる方法
- iCloud写真でjpg画像をダウンロードできない
- Acrobatが遅い時に見る記事
- Wordpress サイト・ヘルスチェック
- imgur:既にアップロードした写真を既存のpost(Album)に入れ…
- 無料SSL Let's EncryptでWordpressサイトをSSL化する-Ubuntu版
- [ubuntu]ドメイン購入からWordpress設定までの全工程解説
- WordPressのメール送信が遅い時のトラブルシューティングとGmai…
- ドコモ携帯が海外でネット接続できなくなるトラブル・パケット…
- R Studio 統計分析システムの導入方法
- Let's Encrypt revoke & サイト消去 @ubuntu
- paiza.ioのjavaプログラムにコマンドライン引数を与える方法2選
- PHP - Ajaxでリアルタイムチャットなど
- PHPMailer導入とトラブル対策
- Netflixの音声をHome Pod mini で再生できない
- wordpress二段階認証の注意点など
- Wordpressの保存ができない・オートセーブを完全に停止する
- ブラザー・レーザープリンタ HL-317CDW リセット
- 動画配信のトラブル対処(ブーンというノイズが乗る)
- 無料SSL Let's EncryptでWordpressサイトをSSL化する-centos版
- 一番簡単なCentOS PHP7.3から7.4への移行方法
- 一番わかりやすいBracketsの導入とトラブルシューティング
- パソコンへのLinuxの導入
- WordPressを多言語化する
- Wordpressの投稿一覧画面から要らない項目を削除する
- VisualStudio2013にあったセットアッププロジェクトを戻す!
- Visual Studioで使うSSHの秘密鍵をputtygenで作成する方法
- PHPMailerのログ出力をSyslogにする
- Open Graph HTML手書きのウエブサイトをSNSでシェアできるよう…
- MacBookProにBootcampでWindows10を入れる際のポイント
- Let's Encryptのトラブルシューティング
- 無料SSL Let's EncryptでWordpressサイトをSSL化する
- client denied by server configuration
- CentOs8 インストール後にすべきことメモ
- C# でWindowsサービスの「説明」を取得する方法
- C# NotifyIconの実装
- 【Windows10】ホテルのWiFi接続時にWiFiのログイン画面が出ない…