Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何浏览到目录并将路径存储在变量中_C#_File_Text - Fatal编程技术网

C# 如何浏览到目录并将路径存储在变量中

C# 如何浏览到目录并将路径存储在变量中,c#,file,text,C#,File,Text,我一直想知道如何通过使用控制台应用程序浏览目录并将所选路径保存到字符串变量?我试过几件事,但似乎都不管用。这是我的密码: string path = ""; FolderBrowserDialog fileDialog = new FolderBrowserDialog(); var result = fileDialog.ShowDialog(); //exception if (result == DialogResult.OK) { path = fileDialog.Sele

我一直想知道如何通过使用控制台应用程序浏览目录并将所选路径保存到字符串变量?我试过几件事,但似乎都不管用。这是我的密码:

string path = "";

FolderBrowserDialog fileDialog = new FolderBrowserDialog();
var result = fileDialog.ShowDialog(); //exception

if (result == DialogResult.OK)
{
    path = fileDialog.SelectedPath;
}

Console.WriteLine(path);
它在第
3行
处抛出
ThreadStateException
异常


“在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的主函数上标记了STAThreadAttribute。只有在将调试器附加到进程时才会引发此异常。”

您似乎正试图在运行在中的控制台应用程序中使用此模式(多线程装置)而
FolderBrowser对话框
控件需要(单线程装置)

要将控制台应用程序置于STA中,请尝试使用属性装饰
Main
方法:

class Program
{
    [STAThread]
    static void Main()
    {
        string path = "";
        var fileDialog = new FolderBrowserDialog();
        var result = fileDialog.ShowDialog();

        if (result == DialogResult.OK)
        {
            path = fileDialog.SelectedPath;
        }

        Console.WriteLine(path);
    }
}

似乎您正试图在运行于(多线程装置)的控制台应用程序中使用它,而
FolderBrowserDialog
控件需要(单线程装置)

要将控制台应用程序置于STA中,请尝试使用属性装饰
Main
方法:

class Program
{
    [STAThread]
    static void Main()
    {
        string path = "";
        var fileDialog = new FolderBrowserDialog();
        var result = fileDialog.ShowDialog();

        if (result == DialogResult.OK)
        {
            path = fileDialog.SelectedPath;
        }

        Console.WriteLine(path);
    }
}

你的代码看起来不错。有什么问题吗?是的,看起来不错。你的意思是允许用户将路径输入控制台吗?在这种情况下,请使用console.ReadLine();复制并粘贴你的代码,获得所需的输出。我启动了程序,但什么也没发生。我运行了调试器,它在第三行引发了异常“var result…ect”@Sapphire什么异常?发布异常和StackTracey您的代码看起来很好。有什么问题吗?是的,看起来很好。您的意思是允许用户将路径输入控制台吗?在这种情况下,请使用console.ReadLine();复制并粘贴了您的代码,获得了所需的输出。我启动了程序,但什么也没有发生。我运行了调试器,它在第三行“var result…ect”@Sapphire What exception?发布异常和stacktraceThanks以获得答案和解释。感谢您的答案和解释。