A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李玮 中级黑马   /  2012-6-18 11:31  /  2866 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学习聊天室的课程的传送文件那课,用户端传送到服务端文件,可是就是不弹出“另存为”窗口代码如下:
  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.                     }
复制代码

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

6 个回复

倒序浏览
加了this的sfd.ShowDialog(this),“另存为”窗口的指针才能被SaveFileDialog的对象调用,若不加thisSaveFileDialog 的对象调用的是本类的其他窗口了,当然不弹出“另存为”窗口。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
许庭洲 发表于 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.         }
复制代码

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
李玮 发表于 2012-6-18 14:52
为啥在xp系统上,不加没事,在win7就必须加
还有为啥,选择文件 不加没事 ...

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

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

我是32位的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马