トップ 一覧 ping 検索 ヘルプ RSS ログイン

C# バックグラウンドで動くの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!C# バックグラウンドで動く
[C#][Visual Studio][C# タスクトレイ]

起動後、画面を指定時間経過後に非表示にしてタスクトレイに常駐させる
!!画面のデザイン
*NotifyIcon と ContextMenuStrip を使って、[[タスクトレイ|C# タスクトレイ]]アプリケーションを作成する。
{{ref_image background_form01.jpg}}
!!コーディング
!Progma.cs
*Application.Run に Form ではなく、ApplicationContext のインスタンスを渡すように修正
 using System;
 using System.Windows.Forms;
 
 namespace MyApp
 {
     static class Program
     {
         /// <summary>
         /// アプリケーションのメイン エントリ ポイントです。
         /// </summary>
         [STAThread]
         static void Main()
         {
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             // Form ではなく、ApplicationContext のインスタンスを渡すように修正
             Application.Run(new MyAppContext());
         }
     }
 }
!ApplicationContext を派生させてクラスを作成
*System.Windows.Forms.ApplicationContext
 using System;
 using System.Windows.Forms;
 
 namespace MyApp
 {
     class MyAppContext : ApplicationContext
     {
         public MyAppContext()
         {
             LauncherForm launcherForm = new LauncherForm();
             // 起動する画面のCloseイベントをこのクラスのOnLauncherFormClosedでハンドリングする
             launcherForm.FormClosed += new FormClosedEventHandler(this.OnLauncherFormClosed);
             
             launcherForm.Show();
             // 画面表示させて1秒待機
             System.Threading.Thread.Sleep(1000);
             // 画面を非表示に
             launcherForm.Hide();
         }
         private void OnLauncherFormClosed(object sender, EventArgs e)
         {
             // アプリケーションの終了
             ExitThread();
         }
     }
 }
!Form を作成
 using System;
 using System.Windows.Forms;
 
 namespace MyApp
 {
     public partial class LauncherForm : Form
     {
         public LauncherForm()
         {
             InitializeComponent();
         }
         private void toolStripMenuItemExit_Click(object sender, EventArgs e)
         {
             // コンテキストメニューの終了メニューで、フォームを閉じる
             this.Close();
         }
     }
 }