首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • C# (Win) 如何在点击某个按钮时,显示一个模式窗体做提示? [无满意答案结贴,结贴人:No4000]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • No4000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-19 11:15:07 楼主
    查询数据量大,为了不使界面像卡死那样,所以想到用模式窗体做提示.
    限于我所懂的多线程知识,无法解决. 另开一线程去frm.ShowDialog()时,提示窗体和主窗体根本结成不了模式窗体. 就像二个独立的窗体. 有做过的提示一下,谢谢
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • walkingmu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:17:031楼 得分:0
    用模态窗体一样会卡死。
    建议使用backgroundworker,让查询工作异步执行,执行完后在DoWorkComplete事件里显示到主窗体
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kkun_3yue3
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:17:292楼 得分:0
    新开一个窗口不可以吗?
    frm.Show();
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Player26
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:27:303楼 得分:0
    引用 1 楼 walkingmu 的回复:
    用模态窗体一样会卡死。
    建议使用backgroundworker,让查询工作异步执行,执行完后在DoWorkComplete事件里显示到主窗体


    具体怎么做呢 ?  关注中。。  喜欢多线程
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • No4000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:30:084楼 得分:0
    引用 1 楼 walkingmu 的回复:
    用模态窗体一样会卡死。
    建议使用backgroundworker,让查询工作异步执行,执行完后在DoWorkComplete事件里显示到主窗体

    给个具体例子吧,谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • No4000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:32:465楼 得分:0
    引用 2 楼 kkun_3yue3 的回复:
    新开一个窗口不可以吗?
    frm.Show();

    不可以,因为查询太久的话,当切换其他程序(如浏览器)再切换到MIS软件,就只显示白屏
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hwj383
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:39:176楼 得分:0
    另外一个线程开启窗体是不会呈现模态....
    ThreadMethod method = new ThreadMethod(xxx,xxx,xxx,xxx,xxx)
    ...
    ...
    ...
    Thread thread = new Thread(new TheadStart(Method));
    thread.IsBackground = true;
    thread.Start();

    class ThreadMethod
    {
          ...
          ...
          ...
          ThreadMethod(xxx,xxx,xxx,xx,xxx)
          {
          ...
          }
          public xxx Method(xxx xxx,xxx,xxx)
          {
              ....
          }
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wanghui0380
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:44:527楼 得分:0
    直接使用模态窗口不行,因为父窗口没有关闭子窗口的方法

    我一般是把父窗口的DataSource交给子窗口,让子窗口填充DataSource,然后子窗口自己关闭自己(当然,这个最好还是多线程去做比较好)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • walkingmu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:56:238楼 得分:0
    拖一个BackGroundWorker进来
    在DoWork事件上双击,里面写要异步执行的代码。
    在RunWorkComplete事件上双击,里面填写需要界面交互的代码,比如把异步执行的结果填充到DataGridView中。

    当你要启动这个后台线程的时候用
    this.backgroundWorker_Combo.RunWorkerAsync(); //还有一种重载,可以把一个object传进去

    线程工作完毕,自动调用RunWorkComplete事件

    可以参考这篇文章:
    http://www.cnblogs.com/walkingmu/archive/2008/05/02/1179501.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • No4000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 14:13:429楼 得分:0
    还有一个问题,我想要做通用的呢? 并不是只针对一个窗口,而是所有要查询的窗体都有这种功能
    最好是这个对象show的时候显示,close的时候关闭.
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved