我目前正在尝试制作一个项目的mp3播放器。
我按照指南编写了这段代码:
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 WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string[] files, path;
[STAThread]
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
files = openFileDialog1.SafeFileNames;
path = openFileDialog1.FileNames;
for (int i = 0; i < files.Length; i++)
{
listBox1.Items.Add(files[i]);
}
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = path[listBox1.SelectedIndex];
}
}
}
这是我的形式的屏幕:
出于某种原因,当我点击“打开”按钮时,没有任何反应。首先,当我使用此代码时,我收到有关“Form1_load”的错误,但由于我没有使用它,我只是删除了错误行,然后没有发现错误。
我很无能,所以任何人都知道出了什么问题?
我完全遵循了这个指南: http://www.c-sharpcorner.com/UploadFile/8ea152/mp3-media-player-in-C-Sharp-4-0/
由于
答案 0 :(得分:0)
首先确保您为按钮指定了click事件,只需双击设计窗口中的按钮,如果它将您重定向到buttonclick方法,那么一切都很好,如果没有,则先分配。为此
public Form1()
{
InitializeComponent();
button1.Click += button1_Click;
}
和
为什么你需要[STAThread]?我的意思是删除属性然后重试,因为[STAThread]用于下面的共鸣: -
STAThreadAttribute标记一个线程使用单线程COM 公寓如果需要COM。默认情况下,.NET不会初始化COM 所有。它只在需要COM时才会发生,就像COM对象或COM一样 创建控件或需要拖放'n'时,即COM 初始化。当发生这种情况时,.NET会调用底层证券 CoInitializeEx函数,它接受一个指示是否加入的标志 线程到多线程或单线程的公寓。
有关更多信息: -
http://blogs.msdn.com/b/jfoscoding/archive/2005/04/07/406341.aspx