第20回 右クリックメニューを用意する

これまでの作業ではフォームを右クリックするだけでNG登録画面が表示されるようにしていました。
今回はメインウインドウに右クリックメニューを用意して、そこから開くようにします。

ついでに次回以降のためにレーティング用や再生設定用のメニュー項目、
エクスプローラーで開いたり、最小化、終了するためのメニュー項目も用意しました。

using System;
using System.Collections.Generic;
using System.Diagnostics;			//追加
using System.IO;
using System.IO.Compression;
using System.Windows.Forms;
using WMPLib;

namespace MP3Player
{
	public partial class Form1 : Form
	{
		WindowsMediaPlayer _mediaPlayer = new WindowsMediaPlayer();

		Timer _timer = new Timer();

		public static Option _option = new Option();


		List<AudioItem> _listFiles;			//音楽ファイル一覧
		int _nCurrentIndex = -1;			//↑へのインデックス


		List<int> _listPlayHistory = new List<int>();		//過去の再生曲
		List<int> _listPlayNext = new List<int>();			//未来の再生曲。なければランダム


		bool _bStopButtonPushed = false;	//「停止」ボタンを押したらtrue

		public Form1()
		{
			InitializeComponent();

			//設定の読み込み
			Option.Load(out _option, Utility.GetExeFolder() + "option.txt");

			Utility.CreateTmpFolder();			//tmpフォルダの作成


			//mp3フォルダからの音楽ファイルリスト読み込み
			_listFiles = EnumFiles(_option.strFolder);


			//フォームが表示されたときの処理
			Shown += delegate
			{
				//シークバーにフォーカスがあると、再生位置が表示されないのでここで再生ボタンにフォーカスを与える
				buttonPlay.Focus();
			};

			//以下を削除
			////暫定的に右クリックでNG登録画面を呼び出す
			//MouseClick +=  (sender, e) =>
			//{
			//	if (e.Button == MouseButtons.Right)
			//	{
			//		if (_nCurrentIndex >= 0)
			//		{
			//			AddNGForm dlg = new AddNGForm(_listFiles[_nCurrentIndex], labelTitle.Text, labelArtist.Text);
			//			dlg.ShowDialog();
			//		}
			//	}
			//};

			//以下を追加
			//フォーム右クリックメニューの設定
			{
				ContextMenuStrip menu = new ContextMenuStrip();

				ToolStripItem[] stripItem = new ToolStripMenuItem[]
				{
					new ToolStripMenuItem("曲レーティング",null,new ToolStripMenuItem[]
					{
						new ToolStripMenuItem("なし", null, delegate
							{
							}),
						new ToolStripMenuItem("★", null, delegate
							{
							}),
						new ToolStripMenuItem("★★", null, delegate
							{
							}),
						new ToolStripMenuItem("★★★", null, delegate
							{
							}),
						new ToolStripMenuItem("★★★★", null, delegate
							{
							}),
						new ToolStripMenuItem("★★★★★", null, delegate
							{
							}),
					}),
					new ToolStripMenuItem("アーティストレーティング",null,new ToolStripMenuItem[]
					{
						new ToolStripMenuItem("なし", null, delegate
							{
							}),
						new ToolStripMenuItem("★", null, delegate
							{
							}),
						new ToolStripMenuItem("★★", null, delegate
							{
							}),
						new ToolStripMenuItem("★★★", null, delegate
							{
							}),
						new ToolStripMenuItem("★★★★", null, delegate
							{
							}),
						new ToolStripMenuItem("★★★★★", null, delegate
							{
							}),
					}),
					new ToolStripMenuItem("NG登録", null, delegate
						{
							if (_nCurrentIndex >= 0)
							{
								AddNGForm dlg = new AddNGForm(_listFiles[_nCurrentIndex], labelTitle.Text, labelArtist.Text);
								dlg.ShowDialog();
							}
						}),
					new ToolStripMenuItem("再生設定", null, delegate
						{
						}),
					new ToolStripMenuItem("エクスプローラー", null, delegate
						{
							if (_nCurrentIndex >= 0)
							{
								Process.Start("explorer.exe","/select,\"" + _listFiles[_nCurrentIndex].strFile + "\"");
							}
						}),
					new ToolStripMenuItem("最小化", null, delegate
						{
							if (WindowState == FormWindowState.Normal)
								WindowState = FormWindowState.Minimized;
						}),
					new ToolStripMenuItem("終了", null, delegate
						{
							Close();
						}),
				};
				menu.Items.AddRange(stripItem);

				ContextMenuStrip = menu;
			}

プロジェクトファイルをダウンロード


カテゴリー「MP3プレーヤーを作る(C#)」 のエントリー

カテゴリー「MP3プレーヤーを作る(C#)」 のエントリー