黑马程序员技术交流社区

标题: 在win7系统下,SaveFileDialog另存为问题 [打印本页]

作者: 李玮    时间: 2012-6-18 11:31
标题: 在win7系统下,SaveFileDialog另存为问题
学习聊天室的课程的传送文件那课,用户端传送到服务端文件,可是就是不弹出“另存为”窗口代码如下:
  1. SaveFileDialog sfd = new SaveFileDialog();
  2.                     if (sfd.ShowDialog() == DialogResult.OK)
  3.                     {
  4.                         string fileSavePath = sfd.FileName;//获得要保存的文件路径
  5.                         //创建文件流,然后让文件流来 根据路径创建一个文件
  6.                         using (FileStream fs = new FileStream(fileSavePath, FileMode.Create))
  7.                         {
  8.                             fs.Write(arrMsgRec, 1, Length - 1);
  9.                             showMessage("文件保存成功:"+fileSavePath);
  10.                         }
  11.                     }
复制代码
在网上找到了方法,但是没有说明求解,其实就是在sfd.ShowDialog()括号里加了this,就解释!!!
  1. SaveFileDialog sfd = new SaveFileDialog();
  2.                     if (sfd.ShowDialog(this) == DialogResult.OK)
  3.                     {
  4.                         string fileSavePath = sfd.FileName;//获得要保存的文件路径
  5.                         //创建文件流,然后让文件流来 根据路径创建一个文件
  6.                         using (FileStream fs = new FileStream(fileSavePath, FileMode.Create))
  7.                         {
  8.                             fs.Write(arrMsgRec, 1, Length - 1);
  9.                             showMessage("文件保存成功:"+fileSavePath);
  10.                         }
  11.                     }
复制代码

作者: 许庭洲    时间: 2012-6-18 13:30
加了this的sfd.ShowDialog(this),“另存为”窗口的指针才能被SaveFileDialog的对象调用,若不加thisSaveFileDialog 的对象调用的是本类的其他窗口了,当然不弹出“另存为”窗口。
作者: 李玮    时间: 2012-6-18 14:52
许庭洲 发表于 2012-6-18 13:30
加了this的sfd.ShowDialog(this),“另存为”窗口的指针才能被SaveFileDialog的对象调用,若不加thisSaveFi ...

为啥在xp系统上,不加没事,在win7就必须加
还有为啥,选择文件 不加没事
  1. //选择要发送的文件
  2.         private void btnChooseFile_Click(object sender, EventArgs e)
  3.         {
  4.             OpenFileDialog OFD = new OpenFileDialog();
  5.             if (OFD.ShowDialog() == DialogResult.OK)
  6.             {
  7.                 txtFilePath.Text = OFD.FileName;//选择的文件名(路径)
  8.             }

  9.         }
复制代码

作者: 许庭洲    时间: 2012-6-18 15:21
李玮 发表于 2012-6-18 14:52
为啥在xp系统上,不加没事,在win7就必须加
还有为啥,选择文件 不加没事 ...

win7系统是在XP系统基础上升级的操作软件,里面加了一些XP没有的补丁和安全代码,可能与微软的开发软件有关。
作者: ren1015    时间: 2012-6-19 07:54
不对啊,我的操作系统是win7 64位的,运行了你的程序,不加this一样可以弹出另存为对话框。
作者: 许庭洲    时间: 2012-6-19 14:52
ren1015 发表于 2012-6-19 07:54
不对啊,我的操作系统是win7 64位的,运行了你的程序,不加this一样可以弹出另存为对话框。 ...

win7 32位操作系统与win7 64位操作系统平台兼容性有很大区别,就好像有些软件能装在XP系统上,但放在WIN7系统上安装估计不行了,除非装了能支持开发软件的补丁或者兼容软件。
作者: 李玮    时间: 2012-6-20 13:47
ren1015 发表于 2012-6-19 07:54
不对啊,我的操作系统是win7 64位的,运行了你的程序,不加this一样可以弹出另存为对话框。 ...

我是32位的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2