本文实例分析了win7中c#的winform编程使用savefiledialog不能弹出保存窗体的解决方法。分享给大家供大家参考。具体分析如下:
客户端和服务器传输文件时, 服务器端都显示发送成功了,但是到客户端保存时,savefiledialog 保存对话框就是弹不来?!!
仔细的检查代码好几遍,逻辑上没有错误。就是弹不出来,很无语了。就上网查了,查了很多资料,没有什么头绪。在查的过程中,我看见这样的一句话“你前面都说了,你使用线程调用,那么这个线程是否为主线程?如果不是主线程,那么你应该把它交给主线程去处理”,然后我就用一个例子模拟了一下,确实有关系。
模拟的例子:
private void button1_click(object sender, eventargs e)
{
thread t = new thread(savedialog);
t.isbackground = true;
//t.apartmentstate = apartmentstate.sta;//缺少这句话,就会出错误。
//不过以上这句在vs 2010中显示是被微软否决的,过时的,虽然还能用。但是为了更好的兼容版本,微软推出以下方法:
t.setapartmentstate(apartmentstate.sta); //即是在线程启动时设置它的单元状态,这里设置它的状态为单线程单元
t.start();
}
public void savedialog()
{
savefiledialog result = new savefiledialog();
result.showdialog();
}
}
模拟的例子:缺少这句话【t.apartmentstate = apartmentstate.sta】,就会出错误。但在vs2010中设置方式变为t.setapartmentstate(apartmentstate.sta);//即是在线程启动时设置它的单元状态,这里设置它的状态为单线程单元
同理 savefiledialog 保存对话框就是弹不来???是不是也是这个问题啊?经过尝试后,还真是这的问题。
就这么简简单单的一句话,就花费了我两个多小时,但最后解决了,也很高兴,并且在找的过程中收获了不少。这就是有失必有得吧!
希望本文所述对大家的c#程序设计有所帮助。
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
浅谈Visual Studio 2019 Vue项目的目录结构
网友评论