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以获得答案和解释。感谢您的答案和解释。