关于.ShowDialog()的问题!!!在win7上死活不出对话框

majian1234 2014-03-12 03:19:18
我是在xp上运行正常,但是在win7 32位上就有问题,代码每次到ShowDialog()时候就死。
SaveFileDialog sfDialog = new SaveFileDialog();
sfDialog.Filter = "Excel文件|*.xls;";
sfDialog.FileName = "未命名";
System.Windows.Forms.DialogResult dlrOK = sfDialog.ShowDialog();
if(dlrOK == System.Windows.Forms.DialogResult.OK)
{。。。。。}
有没有大神帮忙看下,我在网上说是[STAThread]的问题,但我的本来就加了,求大神帮忙
...全文
289 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
f7567214jj 2014-03-12
  • 打赏
  • 举报
回复
引用 5 楼 majian1234 的回复:
[quote=引用 2 楼 f7567214jj 的回复:] 最简单的改法 DialogResult reuslt = new SaveFileDialog().ShowDialog(this);
貌似不行啊 [/quote] 你先改成这样,看能不能跑起来 SaveFileDialog sfd = new SaveFileDialog(); if (sfd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) {.............}
majian1234 2014-03-12
  • 打赏
  • 举报
回复
引用 2 楼 f7567214jj 的回复:
最简单的改法 DialogResult reuslt = new SaveFileDialog().ShowDialog(this);
貌似不行啊
majian1234 2014-03-12
  • 打赏
  • 举报
回复
必须弄一个线程?
引用 1 楼 f7567214jj 的回复:
在win7中,用线程调用,不是主线程会出现错误, 所以应该把它交给主线程去处理 private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(saveDialog); t.IsBackground = true; t.ApartmentState = ApartmentState.STA; t.Start(); } public void saveDialog() { SaveFileDialog result = new SaveFileDialog(); result.ShowDialog(); }
必须弄一个线程么?
majian1234 2014-03-12
  • 打赏
  • 举报
回复
我试试看!!!!
f7567214jj 2014-03-12
  • 打赏
  • 举报
回复
最简单的改法 DialogResult reuslt = new SaveFileDialog().ShowDialog(this);
f7567214jj 2014-03-12
  • 打赏
  • 举报
回复
在win7中,用线程调用,不是主线程会出现错误, 所以应该把它交给主线程去处理 private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(saveDialog); t.IsBackground = true; t.ApartmentState = ApartmentState.STA; t.Start(); } public void saveDialog() { SaveFileDialog result = new SaveFileDialog(); result.ShowDialog(); }

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧