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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王硕 黑马帝   /  2011-12-3 22:42  /  2017 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我做的聊天程序(最后一套视频的内容)不能传文件(一点发送文件就没有反应了,什么提示也没有),但是放在别人的电脑上就能传,还有别人做好的聊天程序放在我的电脑上就又不能传文件了,很明显是电脑问题,但是问题可能出在哪啊?很怪,关了防火墙杀毒软件都不管用,期待高手解答。。。

评分

参与人数 1技术分 +2 收起 理由
朱勋 + 2

查看全部评分

2 个回复

倒序浏览
你是说在接收端不显示保存文件对话框吧 你用的应该是win 7系统吧
上次邹老师提供了这样一种解决方案
  1. //创建负责接收服务端发送来数据的线程
  2. threadClient = new Thread(ReceiveMsg);
  3. threadClient.IsBackground = true;
  4. //如果在win7下要通过某个线程来调用文件选择框的代码,就需要设置如下
  5. threadClient.SetApartmentState(ApartmentState.STA);
  6. threadClient.Start();
复制代码
或者你直接在ShowDialog()方法中传入this也可以 就像这样
  1. if (sdlg.ShowDialog(this) != DialogResult.OK)
  2.     return;
复制代码
这样做的具体原因还要问下老师 目前我也讲不清楚 呵呵

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
我今天也遇到这种情况,看了一下。大体上是这个原因。ShowDialog有两个重载方法

//用默认的所有者运行通用对话框。
public DialogResult ShowDialog();

// 参数:  owner
// 任何实现 System.Windows.Forms.IWin32Window(表示将拥有模式对话框的顶级窗口)的对象。
public DialogResult ShowDialog(IWin32Window owner);

在Win7同时启动了两个程序,如果使用第一个方法,系统不知道究竟谁是对话框的owner,因此要显式加this,表示当前窗口(即服务端窗口)为对话框的owner,
我觉得这应该是Win7的一个不足。不过无关大局。小bug

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

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