第17回 NG登録画面を作る

前回「第16回 NGファイル処理を作る」はNGファイル関連処理を実装しました。
今回はその処理を使ってNG登録するための画面を作成します。

「プロジェクト」メニューから「Windowsフォームの追加」を選択し、「AddNGForm.cs」を追加します。
追加したフォーム上には
アーティスト名を表示するラベル「labelArtist」
曲名を教示するラベル「labelTitle」
ファイルパスを表示するラベル「labelFile」
NGファイルを追加するボタン「buttonAddFile」
NGアーティストを追加するボタン「buttonAddArtist」
NGワードを入力するテキストボックス「textboxKeyword」
NGワードを追加するボタン「buttonAddKeyword」
を配置し、ボタンはそれぞれダブルクリックしてイベントハンドラーを自動生成させておきます。

017_01.png

せっかくなのでついでにNGファイルへの追加処理も書きます。
今回は暫定的にメインウインドウを右クリックしたらNG登録画面が表示されるようにしました。
NGワードやNGアーティストは次回以降へ持ち越しです。

■AddNGForm.cs
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 MP3Player
{
	public partial class AddNGForm : Form
	{
		AudioItem _item = null;			//追加

		public AddNGForm(AudioItem item, string strTitle, string strArtist)		//変更
		{
			InitializeComponent();

			//以下を追加
			labelTitle.Text = strTitle;
			labelArtist.Text = strArtist;
			labelFile.Text = Form1._option.RemoveMP3FolderName(item.strFile);
			_item = item;
		}


		private void buttonAddFile_Click(object sender, EventArgs e)
		{
			//以下を追加
			DialogResult ret = MessageBox.Show("NG登録しますか?\nファイル名:" + labelFile.Text, "NG登録", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
			if (ret == DialogResult.OK)
			{
				Form1._option.AddNGFile(_item);
				Close();
			}
		}

		private void buttonAddArtist_Click(object sender, EventArgs e)
		{

		}

		private void buttonAddKeyword_Click(object sender, EventArgs e)
		{

		}
	}
}
■Form1.cs
using System;
using System.Collections.Generic;
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();
					}
				}
			};

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


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