C#添加了浏览功能以及拖放框

时间:2018-09-24 18:52:13

标签: c# .net winforms

所以我已经有一个正常工作的拖放框,可以打开一个.csv文件。我也想添加一个打开文件的openfiledialog方法。在我的拖放功能中,我有:

    private void panel1_DragDrop(object sender, DragEventArgs e)
    {
        Console.WriteLine("Here 1");
        firstTimeThrough = true;
        timer.Stop();

        if (browseRecordFiles == true)
        {
            files = (string[])e.Data.GetData(fileLocation, false);
        } else
        {
            files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
        }

很显然... GetData(fileLocation,false);在这里不能工作。是否有其他解决方法?我有一个ForEach循环,然后循环访问“文件”,所以这就是为什么我希望它以这种方式工作。

“ browseRecordFiles”是一个布尔值,如果单击“浏览”按钮,则该布尔值变为true。

即:fileLocation将为c:\ users \ Administrator \ desktop \ something.csv

编辑:我具有按钮以打开文件对话框,但是我有一个ForEach循环,如下所示:

                foreach (string file in files)
                {

                    try
                    {
                        using (var reader = new StreamReader(file))         // reading the file
                        {
                            while (!reader.EndOfStream)             // Read until the end of the stream
                            {
                                var line = reader.ReadLine().Replace("\"", "");
                                //Console.WriteLine(line);
                                var values = line.Split(',', ' ');   // Ignore the , in the .CSV file and start next read column

                                foreach (var k in values)
                                {
                                    //Console.WriteLine(k);
                                }


                                data.Add(values);             // Add all values to data list
                            }

文件是一个字符串数组,但只有保留拖放文件的文件路径。有没有一种方法可以像用户通过从打开的文件对话框中获取文件路径将文件拖放到文件上一样“模仿”?

1 个答案:

答案 0 :(得分:0)

假设这是Windows窗体应用程序...

  1. 在表单上拖放一个按钮(或使用其他方式来表示他想打开文件(例如,带有“打开”条目的“文件”菜单)
  2. 在表单上放置一个OpenFileDialog控件。它将命名为openFileDialog1
  3. 在对话框控件的属性中,将DefaultExt设置为csv,将Filter设置为Comma-Separated Files|*.csv|All Files (*.*)|*.*
    • 您可能想要设置其他属性,例如Title
  4. 双击新按钮,创建一个按钮Click处理程序,然后将代码文件打开到该位置。
  5. 在处理程序中,输入如下代码:

这是标准的打开文件处理程序:

  private void OpenFileBtn_Click(object sender, EventArgs e)
  {
      //you may want to set the default `InitialDirectory` property
      if (openFileDialog1.ShowDialog() == DialogResult.OK)
      {
         //do something with the information from the OpenFileDialog
         //in particular, you are going to want to read the `FileName` property
      }
 }

如果您希望用户一次可以打开多个文件,请设置MultiSelect属性。

要使用那些多次选择的文件名,请查看对话框的FileNames属性。它是用户选择的文件名(完整的文件名和路径名)的集合。遍历该列表并调用File.ReadAllTextFile.ReadAllLines以获取CSV文件的内容。