This application will prompt you to open a folder. Then the application scans all the files in the folder and generates a button for each (.wav) file. My intention was to play the file (.wav) at the click of a button.
Be that as it may, I am dynamically creating buttons. I use button.Tag to send the button number, however I want to send another object that contains the full path to the wav file. However, I added it, but I know that you cannot add two button.Tag , as I did. So my question is how to implement this.
public partial class Form1 : Form { public SoundPlayer Sound1; public static int btnCount = 0; public Form1() { InitializeComponent(); SetFolderPath(); } private void Form1_Load(object sender, EventArgs e) { } public void addDynamicButton(string folder, string fileName) { btnCount++; string soundfilepath = folder + "\\" + fileName + ".wav"; Button button = new Button(); button.Location = new Point(20, 30 * btnCount + 10); button.Size = new Size(300, 23); button.Text = fileName; button.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; button.UseVisualStyleBackColor = true; button.Click += new EventHandler(btnDynClickEvent); button.Tag = btnCount; button.Tag = soundfilepath; this.Controls.Add(button); } void btnDynClickEvent(object sender, EventArgs e) { Button button = sender as Button; if (button != null) { switch ((int)button.Tag) { case 1: Sound1 = new SoundPlayer((string)button.Tag); Sound1.Play(); break; } } } public void SetFolderPath() { FolderBrowserDialog folder = new FolderBrowserDialog(); folder.Description = "Select the sound file Folder"; if (textBox1.Text.Length > 2) { folder.SelectedPath = textBox1.Text; } else { folder.SelectedPath = @"C:\"; } if (folder.ShowDialog() == DialogResult.OK) { textBox1.Text = folder.SelectedPath; string[] files = Directory.GetFiles(folder.SelectedPath, "*.wav", SearchOption.AllDirectories); int count = files.Length; richTextBox1.Text = count.ToString() + " Files Found"; foreach (string file in files) { string fileName = Path.GetFileNameWithoutExtension(file); addDynamicButton(folder.SelectedPath, fileName); } } } private void btnOpenFolder(object sender, EventArgs e) { SetFolderPath(); } }
source share