如何在c#中关联多个文件

时间:2017-09-29 13:27:23

标签: c# associations

当我在计算机中选择多个文件并打开时,每个文件在我的应用程序中打开一个实例。在配置Windows应用程序中运行一个实例,但是我的应用程序打开了一个文件。如何在我的应用程序的列表框中打开所选文件并添加地址文件。

program.cs

static class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        if (args != null && args.Length > 0)
        {
            string fileName = args[0];
            if (File.Exists(fileName))
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                Form1 MainFrom = new Form1();
                MainFrom.OpenFile(fileName);
                Application.Run(MainFrom);
            }
            else
            {
                MessageBox.Show("The file does not exist!", "BMPlayer Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
        else
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Form.cs

        public void OpenFile(string filePath)
    {
        string file1 = File.ReadAllText(filePath);
        axWindowsMediaPlayer1.URL = filePath;
    }

此代码仅适用于一个文件。

1 个答案:

答案 0 :(得分:0)

我不知道您桌面项目的类型,但您可以使用以下方法在WinForms中执行此操作:

private void OpenFiles()
    {            
        using (var openFolderDialog = new OpenFileDialog { Multiselect = true })
        {
            openFolderDialog.Filter = "csv files (*.csv)|*.csv|txt files (*.txt)|*.txt|All files (*.*)|*.*";

            if (openFolderDialog.ShowDialog() == DialogResult.OK
                && openFolderDialog.FileNames.All(x => !string.IsNullOrEmpty(x)))
            {
                string[] files = openFolderDialog.FileNames;

                // TO DO: You can now loop over the selected files
                foreach(var fileName in files)
                {
                    // Addyour logic here
                }
            }
        }
    }

使用Windows Media Player播放来自一个WMP单个进程(如播放列表)的歌曲文件列表的程序示例:

class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        string space = " ";
        string filePath1 = @"D:\mysong1.mp3";
        string filePath2 = @"D:\mysong2.mp3";            

        List<string> songFiles = new List<string>();
        songFiles.Add(filePath1);
        songFiles.Add(filePath2);            

        var playList = songFiles.Aggregate((a, b) => a + space + b);

        Process.Start("wmplayer.exe", playList);            
    }
}

您可以使用上述两个代码的组合来满足您的需求。