C# OpenFileDialog错误?
这是单击“保存”按钮时的代码:C# OpenFileDialog错误?,c#,asp.net,winforms,C#,Asp.net,Winforms,这是单击“保存”按钮时的代码: OpenFileDialog myOpenfileDialog = new OpenFileDialog(); myOpenfileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; myOpenfileDialog.FilterIndex = 2; myOpenfileDialog.RestoreDirectory = true;
OpenFileDialog myOpenfileDialog = new OpenFileDialog();
myOpenfileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
myOpenfileDialog.FilterIndex = 2;
myOpenfileDialog.RestoreDirectory = true;
if (myOpenfileDialog.ShowDialog() == DialogResult.OK)
{
FileUploadData.SaveAs(myOpenfileDialog.FileName);//my file upload control taking the path to save the file to the selected location
}
我得到一个例外:
在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保主函数上标记了STAThreadAttribute。只有将调试器附加到进程时,才会引发此异常。
这是threadStateException
嗯,这个信息对我来说相当清楚-你需要使用STA线程。如果您正在编写Windows窗体应用程序,请确保您的
Main
方法具有如下属性:
[STAThread]
static void Main(string[] args)
{
...
}
如果您正在编写ASP.NET应用程序,首先不应该尝试在代码中使用Windows窗体控件。我之所以提到这一点,是因为您已经用
winforms
和asp.net
标记了您的问题-您不应该将这两个问题的代码混在一起。嗯,我觉得这条信息相当清楚-您需要使用STA线程。如果您正在编写Windows窗体应用程序,请确保您的Main
方法具有如下属性:
[STAThread]
static void Main(string[] args)
{
...
}
如果您正在编写ASP.NET应用程序,首先不应该尝试在代码中使用Windows窗体控件。我之所以提到这一点,是因为您已经用
winforms
和asp.net
标记了您的问题-您不应该将这两个问题的代码混用在一起。您的异常非常简单,只需将Main方法标记为STAThread属性即可
编辑:
考虑到这是一个ASP.NET应用程序,那么您需要在您的ASPX页面中使用以下内容来显示一个文件打开类对话框,让用户选择一个文件,我假设这就是您的意图:
<input type=file name="fileToUpload">
OR
<asp:FileUpload ID="FileUpload1" runat="server" />
或
您的异常非常简单,只需使用STAThread属性标记Main方法即可
编辑:
考虑到这是一个ASP.NET应用程序,那么您需要在您的ASPX页面中使用以下内容来显示一个文件打开类对话框,让用户选择一个文件,我假设这就是您的意图:
<input type=file name="fileToUpload">
OR
<asp:FileUpload ID="FileUpload1" runat="server" />
或
它不能用于ASP.NET。仅适用于Winforms。
只有Winforms可以使用单线程单元模型。它不能用于ASP.NET。仅适用于Winforms。
只有Winforms可以使用单线程单元模型。@Jon:你一直在回答问题,我要走了……twittter上见。@Jon:这是asp.net应用程序,不是win表单。我在应用程序中使用了System.Windows.Forms,因此我应该能够访问OpenFileDialog类,并使用它浏览保存文件的位置。@Nayemkhan:不要混用。首先使用OpenFileDialog的目的是什么?也许你应该问我如何在asp.net中实现OpenFileDialog类实现的功能。@ace:他打败了所有人,包括我。毕竟他是Jon Skeet:)@nayeemkhan:假设你试图从互联网(或你的网页)下载一个文件,浏览器通常有能力将文件保存到磁盘上。然而,不同的浏览器处理它的方式不同。例如,在IE中,在“下载”对话框中,您可以保存到磁盘上的特定位置,在firefox中,默认为根据您的首选项设置的位置。浏览器天生具有将文件保存到磁盘的能力,但我认为您无法控制通过服务器端将文件保存到哪里。@Jon:您一直在回答我的问题,我不在这里……twittter上见。@Jon:这是一个asp.net应用程序,不是赢家表单。我在应用程序中使用了System.Windows.Forms,因此我应该能够访问OpenFileDialog类,并使用它浏览保存文件的位置。@Nayemkhan:不要混用。首先使用OpenFileDialog的目的是什么?也许你应该问我如何在asp.net中实现OpenFileDialog类实现的功能。@ace:他打败了所有人,包括我。毕竟他是Jon Skeet:)@nayeemkhan:假设你试图从互联网(或你的网页)下载一个文件,浏览器通常有能力将文件保存到磁盘上。然而,不同的浏览器处理它的方式不同。例如,在IE中,在“下载”对话框中,您可以保存到磁盘上的特定位置,在firefox中,默认为根据您的首选项设置的位置。浏览器天生具有将文件保存到磁盘的能力,但是我认为您无法通过服务器端控制文件保存的位置。这是一个ASP.NET应用程序。winforms中没有main()。在ASP.NET应用程序中没有OpenFileDialog的使用,因此它被理解为winform应用程序。亲爱的,这是一个ASP.NET应用程序,我在其中使用System.Windows.Forms,以便使用OpenFileDialog类。OpenFileDialog在ASP.NET应用程序中不起作用,所以请忘记它。使用需要使用html输入标记类型=文件来显示文件打开对话框。这是一个ASP.NET应用程序。winforms中没有main()。在ASP.NET应用程序中没有OpenFileDialog的使用,因此它被理解为winform应用程序。亲爱的,这是一个ASP.NET应用程序,我在其中使用System.Windows.Forms,以便使用OpenFileDialog类。OpenFileDialog在ASP.NET应用程序中不起作用,所以请忘记它。使用需要使用html input tag type=file显示文件打开对话框。您已使用asp.net和winforms为问题添加了标签,但没有说明这是一个web应用程序,您试图在其中使用Windows窗体控件,还是一个Windows窗体应用程序。请为问题添加更多详细信息。这是一个asp.net应用程序,仅在我使用System.Windows.Forms使用OpenFileDialog类的情况下。问题是您不能。Winforms不适用于ASP.NET,而是适用于Winforms应用程序。您已将问题标记为ASP.NET和Winforms,但没有说明这是否是一个您正在使用的web应用程序