今回の記事はC#を使ってタスク常駐アプリを作る中でファイルダイアログを表示する方法に関しての記事です。初心者にも分かりやすいように記載していくので是非参考にしてみてください。
C#でタスク常駐アプリを作成
VisualStudioでフォームアプリを作成します。
[Visual c#]の中にある[Windows フォームアプリケーション(.NET Framework)]を選択して、[OK]ボタンをクリックすれば作成できます。このままビルドすると画面が現れてしまうので下記のように「Program.cs」を修正します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
new Form1();
Application.Run();
}
}
}
これで画面は現れずにビルドすることができます。
では次にフォームの中身(「Form.cs」)を修正していきます。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
//icon設定
NotifyIcon notifyIcon;
public Form1()
{
InitializeComponent();
// タスクバーに表示しない
this.ShowInTaskbar = false;
this.setComponents();
}
//タスクバーにセットするもの
private void setComponents()
{
notifyIcon = new NotifyIcon();
var iconpath = "自身の指定するパス(.bmp形式のファイル32×32サイズ)";
var bitmap = new Bitmap(iconpath);
this.notifyIcon = new NotifyIcon()
{
Icon = Icon.FromHandle(bitmap.GetHicon()),
Visible = true,
Text = "アイコンにマウスポインタを合わせたときのテキスト"
};
notifyIcon.BalloonTipTitle = "タイトル";
notifyIcon.BalloonTipText = "通知内容など";
notifyIcon.ShowBalloonTip(3000);
//アイコンクリック時のイベントを追加
notifyIcon.Click += new EventHandler(NotifyIcon1_Click);
// アイコンを表示する
notifyIcon.Visible = true;
}
//アイコンクリック時に再表示
private void NotifyIcon1_Click(object sender, EventArgs e)
{
notifyIcon.ShowBalloonTip(3000);
}
}
}
アイコンの設定など細かい箇所の説明は下記記事を記載しているのでそちらから参考にしてみてください。
C#でファイルダイアログを表示
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
//icon設定
NotifyIcon notifyIcon;
public Form1()
{
InitializeComponent();
// タスクバーに表示しない
this.ShowInTaskbar = false;
this.setComponents();
}
//タスクバーにセットするもの
private void setComponents()
{
notifyIcon = new NotifyIcon();
// コンテキストメニュー(右クリック)
ContextMenuStrip contextMenuStrip = new ContextMenuStrip();
ToolStripMenuItem logdownload = new ToolStripMenuItem();
logdownload.Text = "&ファイルダイアログ";
logdownload.Click += ToolStripMenuItem_Click;
contextMenuStrip.Items.Add(logdownload);
//コンテキストメニューをiconに追加
notifyIcon.ContextMenuStrip = contextMenuStrip;
// アイコンを表示する
notifyIcon.Visible = true;
}
// ログダウンロード
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
// ダイアログの説明文
folderBrowserDialog.Description = "フォルダを選択してください。";
// デフォルトのフォルダ
folderBrowserDialog.SelectedPath = @"C:";
// 「新しいフォルダーの作成する」ボタンを表示する(デフォルトはtrue)
folderBrowserDialog.ShowNewFolderButton = true;
//フォルダを選択するダイアログを表示する
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
string savefolder = folderBrowserDialog.SelectedPath;
Console.WriteLine(savefolder);
}
else
{
Console.WriteLine("キャンセルされました。");
}
// オブジェクトを破棄する
folderBrowserDialog.Dispose();
}
}
}
簡単に説明をしていきます。まずコンテキストメニューにボタンを追加していくのでコンテキストメニューを定義します。そこにボタンを追加し、iconに設定します。それが下記の部分です。
notifyIcon = new NotifyIcon();
// コンテキストメニュー(右クリック)
ContextMenuStrip contextMenuStrip = new ContextMenuStrip();
ToolStripMenuItem logdownload = new ToolStripMenuItem();
logdownload.Text = "&ファイルダイアログ";
logdownload.Click += ToolStripMenuItem_Click;
contextMenuStrip.Items.Add(logdownload);
//コンテキストメニューをiconに追加
notifyIcon.ContextMenuStrip = contextMenuStrip;
ボタンの機能はクリックイベントハンドラーに「+=」でついかして関数内でファイルダイアログ処理を行い、ファイルダイアログを表示しております。
では今回の記事は以上です。他にも多数のC#関連の記事を記載しているので是非そちらも参考にしてみてください。
コメント
[…] 「【C#】タスク常駐アプリでファイルダイアログを表示する方法。」 […]