C# 将文件路径传递给其他方法

C# pass file path to other methods

如何将从已删除文件中获取的文件路径传递为另一个 function/method 中的路径?

在 C# windows 表单程序中,我有一个可以将文件拖放到其中的列表框,它会在该列表框中显示文件路径:

 public Form1()
        {
            InitializeComponent();
            this.listBox1.DragDrop += new
           System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
            this.listBox1.DragEnter += new
                       System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
        }
        // drag and drop process
        private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
        {
            var files = (string[])e.Data.GetData(DataFormats.FileDrop);
            if (files.Length == 1 && listBox1.Items.Count == 0)
            {
                e.Effect = DragDropEffects.All;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }
        private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
        {
            string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false);
            int i;
            for (i = 0; i < s.Length; i++)
                listBox1.Items.Add(s[i]);
        }

在程序的另一部分,按下按钮后,我可以将所有文件解压缩到一个设置的目录中,但我希望该目录是我在上面的列表框中放置的目录,而不是在代码中永久设置的目录.

        public static void MyMethod3()
        {
            string startPath = @"C:\testfolder\testprop\practicefolder\";
            string extractPath = @"C:\testfolder\testprop\practicefolder\unzippedstuff";
            Directory.GetFiles(startPath, "*.zip", SearchOption.AllDirectories).ToList()
                .ForEach(zipFilePath =>
                {
                    var extractPathForCurrentZip = Path.Combine(extractPath, Path.GetFileNameWithoutExtension(zipFilePath));
                    if (!Directory.Exists(extractPathForCurrentZip))
                    {
                        Directory.CreateDirectory(extractPathForCurrentZip);
                    }
                    ZipFile.ExtractToDirectory(zipFilePath, extractPathForCurrentZip);
                });
        }

我实际上想同时将相同的路径传递给其他几个 functions/methods/processes,但这似乎是最干净的例子。

抱歉,如果这是一个 stupid/easy 问题,或者如果我做了许多非常错误的事情。我尝试了很多我发现看起来可行的方法,但没有成功。

创建一个字段并将其用作变量,以便它可用于整个 class

我最终遵循了这个答案:How to make a variable available to all classes in XNA/monogame?

"Just create a static class where you will store all your global variables and it will be accessible from all your classes."

    public static class MyGlobals
    {
        public static string finalPathForWork { get; set; }
    }

我确定这不是最好的方法,但它现在有效。