作って覚えるVisual C# 2017 デスクトップアプリ入門
- 作者: 荻原裕之,宮崎昭世
- 出版社/メーカー: 秀和システム
- 発売日: 2017/06/30
- メディア: 単行本
- この商品を含むブログを見る
WindowsFormApp-タスクトレイのアイコンを右クリック・左クリックした時のメニュー表示
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ContextMenu { public partial class MainForm : Form { /// <summary> /// ContextMenuStrip(左) /// </summary> ContextMenuStrip cmsLeft; /// <summary> /// ContextMenuStrip(右) /// </summary> ContextMenuStrip cmsRight; #region コンストラクタ /// <summary> /// コンストラクタ /// </summary> public MainForm() { InitializeComponent(); } #endregion #region /// <summary> /// Loadイベント /// </summary> private void MainForm_Load(object sender, EventArgs e) { this.Opacity = 0; this.ShowInTaskbar = false; this.StartPosition = FormStartPosition.Manual; this.DesktopLocation = new Point(0, 0); //---------------------------------------- // 右クリックメニュー //---------------------------------------- // 第1階層のメニュー ToolStripMenuItem tsiRight = new ToolStripMenuItem(); tsiRight.Text = "右クリックメニュー"; tsiRight.ToolTipText = "右クリックメニューのツールチップ"; // 第2階層のメニュー for (int i = 0; i < 3; i++) { ToolStripMenuItem tsi = new ToolStripMenuItem(); tsi.Text = "メニュー項目" + i.ToString(); tsi.ToolTipText = "メニュー項目" + i.ToString() + "のツールチップ"; tsi.Click += Tsi_Click; tsi.Tag = i.ToString(); tsiRight.DropDownItems.Add(tsi); // セパレートを追加 tsiRight.DropDownItems.Add(new ToolStripSeparator()); } // コンテキストメニューに第1階層のメニューを追加する this.cmsRight = new ContextMenuStrip(); this.cmsRight.Items.Add(tsiRight); //---------------------------------------- // 左クリックメニュー //---------------------------------------- // 第1階層のメニュー { ToolStripMenuItem tsiLeft = new ToolStripMenuItem(); tsiLeft.Text = "左クリックメニュー"; tsiLeft.ToolTipText = "左クリックメニューのツールチップ"; // 第2階層のメニュー for (int i = 0; i < 3; i++) { ToolStripMenuItem tsi = new ToolStripMenuItem(); tsi.Text = "メニュー項目" + i.ToString(); tsi.ToolTipText = "メニュー項目" + i.ToString() + "のツールチップ"; tsi.Click += Tsi_Click; tsi.Tag = i.ToString(); tsiLeft.DropDownItems.Add(tsi); // セパレートを追加 tsiLeft.DropDownItems.Add(new ToolStripSeparator()); } this.cmsLeft = new ContextMenuStrip(); this.cmsLeft.Items.Add(tsiLeft); } } #endregion #region Tsi_Click /// <summary> /// Tsi_Click /// </summary> private void Tsi_Click(object sender, EventArgs e) { ToolStripMenuItem mi = (ToolStripMenuItem)sender; this.txtTag.Text = mi.Tag.ToString(); this.Visible = true; this.Opacity = 100; } #endregion #region notifyIcon_MouseUp /// <summary> /// notifyIcon_MouseUp /// </summary> private void notifyIcon_MouseUp(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { this.notifyIcon.ContextMenuStrip = cmsLeft; } else if (e.Button == System.Windows.Forms.MouseButtons.Right) { this.notifyIcon.ContextMenuStrip = cmsRight; } if (this.notifyIcon.ContextMenuStrip != null) { var method = typeof(NotifyIcon).GetMethod("ShowContextMenu", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); method.Invoke(this.notifyIcon, null); this.notifyIcon.ContextMenuStrip = null; } } #endregion } }