首页 / C# / c# – 是否可以有多个控制按钮.标签
c# – 是否可以有多个控制按钮.标签
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 是否可以有多个控制按钮.标签,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2397字,纯文字阅读大概需要4分钟。
内容图文
此应用程序会提示您打开文件夹.然后,应用程序查看文件夹中的所有文件,并为每个(.wav)文件生成一个按钮.我的意图是按下按钮时播放(.wav)文件.
因为它是我动态创建按钮.我使用button.Tag发送按钮编号,但我希望发送另一个保存wav文件完整路径的对象.我有伪添加它然而,我知道你不能添加两个按钮.像我做的那样.所以我的问题是如何实现这一点.
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();
}
}
解决方法:
我建议在Tag属性中存储一个专门的对象:
class WaveDetailTag {
public FileInfo WaveFile {get; set;}
public int ButtonId {get; set;}
}
执行:
// ...
button.Tag = new WaveDetailTag() {
WaveFile = new FileInfo(soundfilepath),
ButtonId = btnCount
};
// ...
更新
在switch-case中使用:
Button button = sender as Button;
if (button != null)
{
var waveDetail = (WaveDetailTag)button.Tag;
switch (waveDetail.ButtonId)
{
case 1:
Sound1 = new SoundPlayer(waveDetail.WaveFile.FullName);
Sound1.Play();
break;
}
}
内容总结
以上是互联网集市为您收集整理的c# – 是否可以有多个控制按钮.标签全部内容,希望文章能够帮你解决c# – 是否可以有多个控制按钮.标签所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。