在能夠調用OLE以前,必須將當前線程設置爲單線程單元(STA)模式,請確保您的Main函數帶有STAThreadAttribute

在能夠調用OLE以前,必須將當前線程設置爲單線程單元(STA)模式,請確保您的Main函數帶有STAThreadAttribute

From博客園(乏mily)
導入導出功能,在調用ShowDialog時的錯誤,解決辦法以下:html

WinForm窗體的入口點:c#

/// <summary>
        /// 應用程序的主入口點。
        /// </summary>
        [STAThread]
        private static void Main(String[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new LoginForm());
        }

報錯頁面程序以下:函數

public string importPath=""; //全局變量,用於顯示導入文件路勁

        private void btnImport_Click(object sender, EventArgs e)
        {
            Thread importThread = new Thread(new ThreadStart(ImportDialog));
            importThread.SetApartmentState(ApartmentState.STA); //重點
            importThread.Start();
            txtImportPath.Text = importPath;
        }
        public void ImportDialog()
        {
            OpenFileDialog open = new OpenFileDialog();
            open.Filter = "Excel文件|*.xls;*.xlsx";
            if (open.ShowDialog() == DialogResult.OK)
            {
                importPath = open.FileName;

                ReadExcelToTable(importPath);
                UpdateArea();
            }
        }
相關文章
相關標籤/搜索