使用FolderBrowserDialog, ShowDialog返回值一直是Cancel的问题

5 篇文章 0 订阅
2 篇文章 0 订阅

在百度,外国的网站搜索了好久,都没有找到合适的答案,其实这个问题应该也有好多人遇到,就是没人回答,甚至说着说着就没有下文了,也有答非所问,又或者是直接什么直接 new FolderBrowserDialog()  

 

我真想给他一个 “papa” 下去,谁不会用这个呀,人家的问题时 为啥使用了FolderBrowserDialog这个窗体还是打开不了,而且其返回的ShowDialog 的值一直都是Cancel ,有人说是因为加入了皮肤插件IrisSkin2,这个是我一开始认同的问题(因为我这个系统也用到了这个皮肤插件IrisSkin2),也就是这位老兄说的

加入皮肤后就弹不出来了,而解决答案却不了了之,没人回答他的问题,就这样这个沉下去了,而大多数认为可以解决问题是因为把这个原来的Any CPU改为x86,我是一直不认同这个答案的,改为x86可以打开,但是你说现在的电脑有多少人用32位的,所以这个是不可行的。这个问题我整整花了我两个小时都没完成,而且一直搞不懂为啥没有人提出这个问题给好一点的解决方案呢。最后在一个https://www.jb51.net/article/43827.htm貌似看到我要的答案,最后就根据这老兄提供的信息,在根据自己的实际问题终于找到解决方案,其问题所在。

 

 

罪魁祸首在这,如果没有ApartmentState.STA,或者是没有添加STAThreadAttribute标识,就会导致这样的的问题,我们默认创建的新项目的窗口起始Mian方法是有STAThreadAttribute标识的,所以他们测的时候不知所以然都说直接 new FolderBrowserDialog() 没问题,其我一直在想起始打开的窗体已经引用这个STAThreadAttribute标识按道理是可以后面不用在设置的,不知为什么用这个FolderBrowserDialog的时候就没了,最终我就跟那个老兄的一样新建一个线程,然后在重新给它STAThreadAttribute的标识。

但是我们又引用了异步,好像这个不太符合我现在的,但起码也解决了打开的问题,最后我又优化了一下

这样用Thread.Join 继续当前的线程,然后跟后面的异步没有冲突,完美的解决了这个问题。

 

                                   —感谢打赏,给博主一个动力—

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明日及时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值