尝试在.NET中打开文件对话框时出现以下错误:
在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保您的Main函数标记了STAThreadAttribute。仅当调试器附加到进程时才会引发此异常。
我尝试将STAThread()_添加到模块的开头,但是没有效果。此错误的大多数解决方案都要求将STAThread()_添加到main方法中,但我不确定vb.NET应用程序中的主要方法是什么。任何人都可以帮助我吗?
抛出错误的函数的代码如下。谢谢。
Protected Sub cmdUploadNew_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdUploadNew.Click
Dim FileName As String
Dim FileDialog As New OpenFileDialog
FileDialog.InitialDirectory = "C:\"
FileDialog.Filter = "Excel files (*.xlsx)|*.xlsx"
FileDialog.RestoreDirectory = True
If FileDialog.ShowDialog() = DialogResult.OK Then
FileName = FileDialog.FileName
End If
End Sub
答案 0 :(得分:1)
如果您的应用程序设置为“启用应用程序框架”,则可能没有Sub Main。 http://visualstudiomagazine.com/articles/2007/10/01/enable-the-application-framework-in-vb.aspx
1 - 转到项目属性 - >应用程序,然后取消选中“启用应用程序框架”。
2 - 将模块添加到您的应用程序并在该模块内添加
<STAThread()> _
Sub Main()
Application.Run(New MyFirstForm())
End Sub
3 - 返回项目属性 - &gt;应用程序,然后在“启动对象”中选择Sub Main
4 - 为什么sub main:
“每个Visual Basic应用程序都必须包含一个名为Main的过程。” .................................................. ................微软