| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「C Sharp バックグラウンドで動く」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==C# バックグラウンドで動く== [C#][Visual Studio][C# タスクトレイ] 起動後、画面を指定時間経過後に非表示にしてタスクトレイ…」)
 
1行目: 1行目:
 
==C# バックグラウンドで動く==
 
==C# バックグラウンドで動く==
[C#][Visual Studio][C# タスクトレイ]
+
[[C#][Visual Studio][C# タスクトレイ]]
  
 
起動後、画面を指定時間経過後に非表示にしてタスクトレイに常駐させる
 
起動後、画面を指定時間経過後に非表示にしてタスクトレイに常駐させる
16行目: 16行目:
 
     static class Program
 
     static class Program
 
     {
 
     {
         /// <summary>
+
         /// &lt;summary&gt;
 
         /// アプリケーションのメイン エントリ ポイントです。
 
         /// アプリケーションのメイン エントリ ポイントです。
         /// </summary>
+
         /// &lt;/summary&gt;
 
         [STAThread]
 
         [STAThread]
 
         static void Main()
 
         static void Main()

2020年2月15日 (土) 08:00時点における版

C# バックグラウンドで動く

[[C#][Visual Studio][C# タスクトレイ]]

起動後、画面を指定時間経過後に非表示にしてタスクトレイに常駐させる

画面のデザイン

  • NotifyIcon と ContextMenuStrip を使って、[C# タスクトレイ] [タスクトレイ]アプリケーションを作成する。

0285 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();
        }
    }
}