FileDialogue - 显然它不起作用?

时间:2014-05-08 09:23:41

标签: c# mp3

我目前正在尝试制作一个项目的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];
        }
    }
}

这是我的形式的屏幕: enter image description here

出于某种原因,当我点击“打开”按钮时,没有任何反应。首先,当我使用此代码时,我收到有关“Form1_load”的错误,但由于我没有使用它,我只是删除了错误行,然后没有发现错误。

我很无能,所以任何人都知道出了什么问题?

我完全遵循了这个指南: http://www.c-sharpcorner.com/UploadFile/8ea152/mp3-media-player-in-C-Sharp-4-0/

由于

1 个答案:

答案 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