在c#内 用新线程打开的窗体 为什么窗体内无法用FolderBrowserDialog选择文件

这是登录

                //登录成功,关闭窗体
                 this.Close();
                  new System.Threading.Thread(() =>
                  {
                       Application.Run(new 新窗体());
                   }).Start();

在新窗体内 为什么无法使用下面代码

          string path = string.Empty;
            System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
            if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                path = fbd.SelectedPath;
            }

运行上面的代码 程序总是提示无响应 然后退出

1个回答

用户界面操作的东西,都要放在主线程里,并且主线程还必须是 STAThread
不要在别的线程里创建,而是用 Control.Invoke 让某个控件/窗口在主线程里调用

u011954277
小菜来袭 这样的话 也行 但的模态窗体可以打开很多个
大约一年之前 回复
u011954277
小菜来袭 Thread t = new Thread(saveDialog); t.IsBackground = false; t.SetApartmentState(ApartmentState.STA); t.Start();
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问