首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 高分,求一c# winform 实例 [已结贴,结贴人:pgdoryoku]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 07:56:43 楼主
    求一c# winform实例,内容如下:
      当打开一个查询界面查询数据的时候,点击查询的时候,根据数据量查询的时间,弹出一个正在查询的界面,然后,判断数据查询结束后,在把那个"正在查询的界面"自动关闭.

    求一实例,解决后该贴在加100分,外加http://topic.csdn.net/u/20080523/08/8e500e29-f25c-42fa-8bb3-9a7a8bfdbd3c.html贴的相应分数奉上.

    麻烦大家了,谢谢先。
    200  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 08:06:581楼 得分:1
    不是很明白,听着象弹出进度条待查询完成,的问题..
    帮顶一下.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 08:09:522楼 得分:5
    我现在的方法是:
    private void ThreadStart()
            {
                th = new Thread(new ThreadStart(ShowLoading));
                th.Start();
                th.IsBackground = false;
            }
            private void ThreadStop()
            {
                if (th.IsAlive)
                {
                    th.Abort();
                }
            }
            private void ShowLoading()
            {
                LoadTip Loadfrm = new LoadTip();
                Loadfrm.Msg = "正在加载数据选择窗口……";
                Loadfrm.ShowDialog();
                Loadfrm.Refresh();
            }
    调用:
    This.ThreadStart();
    //费时的操作
    This.ThreadStop();
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 08:10:103楼 得分:5
    http://topic.csdn.net/u/20080528/16/fa79fde8-1a2d-4dc0-80d9-ca311be513a7.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 08:12:594楼 得分:1
    求一c# winform实例,内容如下:
      当打开一个查询界面查询数据的时候,点击查询的时候,根据数据量查询的时间,弹出一个正在查询的界面,然后,判断数据查询结束后,在把那个"正在查询的界面"自动关闭.
    =============================
    这个可以用BackGroundWorker来实现。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 08:15:265楼 得分:2
    《.net 2.0 BackgroundWorker类详细用法》:
    在WinForm中经常遇到一些费时的操作界面,比如统计某个磁盘分区的文件夹或者文件数目,如果分区很大或者文件过多的话,处理不好就会造成“假死”的情况,或者报“线程间操作无效”的异常,为了解决这个问题,可以使用委托来处理,在.net2.0中还可以用BackgroundWorker类。

    BackgroundWorker类是.net 2.0里新增加的一个类,对于需要长时间操作而不需要用户长时间等待的情况可以使用这个类。
    注意确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。
    http://blog.csdn.net/zhoufoxcn/archive/2007/10/19/1832819.aspx

    把上面的例子改改就行了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 08:19:186楼 得分:2
    可以先添加一个显示“正在处理。。。”的等待窗体,然后在主窗体中实例化该窗体做为私有变量,在查询时,将该等待窗体显示,在查询完成后,将该窗体隐藏,如:
    WaitingForm frm;
    WaitingForm为最顶层窗体,TopMost=true.

    在Form的Load事件中初始化
    frm = new WaitingForm();

    查询
    private void Search()
    {
    frm.Show();
    查询数据...
    frm.Hide();
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 08:23:357楼 得分:1
    用多线程,实现异步查询
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Tll_W
    • 等级:
    发表于:2008-06-03 08:29:438楼 得分:160
    已经有n多人问过这个问题了,前几天还有个人问我
    顺便问一句,你这个弹出进度对话框要不要显示什么东西啊?比如说进度?

    从你现在做的部分来看,那个worker控件已经不可以了,我教你个办法:
    先新建一个form(Name暂时叫ProgressForm吧),然后在form上拖放一个progressBar控件,该控件属性中的style设置成marquee
    之后在线程所在的窗体中新建一个form的实例:ProgressForm pf = null;
    接下来在线程开始的地方我们初始化该窗体并显示:
    pf = new ProgressForm();
    pf.Owner = this;
    pf.Show();
    在线程结束后让调用:pf.Close();
    如果还有什么不懂得可以加我QQ:476492162
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 08:43:259楼 得分:0
    多谢大家,我下午开始测试,测试ok后.
    明天把该贴子加分后就结帖.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovingkiss
    • 等级:
    发表于:2008-06-03 08:44:4410楼 得分:2
    完美等待窗体的使用
    参考我下载空间,完美的等待窗体,一行代码搞定所有运行等待。。。。。。。。。。
    呵呵,自我吹嘘一下,不过使用起来却是非常简单 ,拖动进来——加一行代码,其他的不用管了;
    需要的时候才进行修改;

    实际上,等待窗体制作的难度,在于:
    1、如何使用ShowDialog()不影响主线程的动作;
    2、如何随时切换主线程、进度线程的动作、进度;
    3、如何用最少的线程和代码来实现它;
    。。。。

    所以这就是我开发这套组件的初衷。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yagebu1983
    • 等级:
    发表于:2008-06-03 08:54:1811楼 得分:1
    关注+学习!!
    帮你顶!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 09:11:5312楼 得分:1
    同意二楼的做法,多线程实现
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 10:31:4413楼 得分:2
    http://www.codeproject.com/KB/macros/usesplashscreen.aspx

    说简单点,你是不是需要一个闪屏的功能,就是new 一个Form  show()出来显示你真正查询的东西,然后自己自动关闭
    这个应该可以帮你不

    Splasher.Status = "Start Creating selecting...";
    System.Threading.Thread.Sleep(500);
    Splasher.Status = "Get Local data...";
    System.Threading.Thread.Sleep(500);
    Splasher.Status = " data  is...";
    System.Threading.Thread.Sleep(500);

    Splasher.Close();

    具体你还可以在Splasher的窗体对象上加你的东西,研究看看!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • whChina
    • 等级:
    发表于:2008-06-03 10:40:2114楼 得分:2
    http://hi.baidu.com/ruishicun/blog/item/030400016db3cd021c95833a.html
    c#将大文件读取或写入到数据库(带进度条的源码)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 11:25:2715楼 得分:1

    我现在的方法是:
    C# code
    private void ThreadStart() { th = new Thread(new ThreadStart(ShowLoading)); th.Start(); th.IsBackground = false; } private void ThreadStop() { if (th.IsAlive) { th.Abort(); } } private void ShowLoading() { …
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 11:35:4016楼 得分:1
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 11:48:1717楼 得分:1
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 12:32:0918楼 得分:1
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 15:21:5919楼 得分:0
    maco_wang您好,程序运行到
    C# code
    private void ShowLoading() { LoadTip Loadfrm = new LoadTip();

    这里的new loadTip就出错了,我引入了using System.Threading;也不行,
    虚心请教下,该如何解决这个问题呢?谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 15:25:1420楼 得分:0
    谢谢lovingkiss大哥,提供的代码下载非常精彩,能不能在提供个c#写的代码呢?
    万分感谢。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 15:45:2421楼 得分:1
    呵呵
    路过哈.....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjce
    • 等级:
    发表于:2008-06-03 16:00:2222楼 得分:5
    不用那么复杂还要多线程吧
    先定义一个等待窗体,可设为无边框,中间加个Lable,text属性为“正在查询。。。”
    然后在点击查询按钮中的代码为:

    From frmWait=new FrmWait();
    frmWait.Show();
    frmWait.Update();
    你的查询语句。。
    frmWait.Close();


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 16:21:3523楼 得分:5
    先定义一个等待窗体,中间加个Lable,text属性为“正在查询。。。” ;再加一个Time执行更新事件Time的Interval设置一个很小的值,ProcessForm_Load后,就执行startTime_Tick
    private void ProcessForm_Load(object sender, EventArgs e)
            {
                startTime.Enabled = true;
                startTime.Start();
            }

            private void startTime_Tick(object sender, EventArgs e)
            {
                startTime.Enabled = false;
                startTime.Stop();
                doUpdate();
                Close();
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 21:53:3524楼 得分:0
    引用 14 楼 whChina 的回复:
    http://hi.baidu.com/ruishicun/blog/item/030400016db3cd021c95833a.html
    c#将大文件读取或写入到数据库(带进度条的源码)

    大哥,代码好长且没有相应数据库代码...这个实例怎么实现...
    能麻烦提供个项目实例吗?谢了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 23:22:0525楼 得分:0
    引用 8 楼 Tll_W 的回复:
    已经有n多人问过这个问题了,前几天还有个人问我
    顺便问一句,你这个弹出进度对话框要不要显示什么东西啊?比如说进度?

    从你现在做的部分来看,那个worker控件已经不可以了,我教你个办法:
    先新建一个form(Name暂时叫ProgressForm吧),然后在form上拖放一个progressBar控件,该控件属性中的style设置成marquee
    之后在线程所在的窗体中新建一个form的实例:ProgressForm pf = null;
    接下来在线程开始的地方我们初…


    代码相当精彩,只用了几行代码就实现了.太厉害了。^_^bbb
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 23:24:4626楼 得分:0
    代码相当精彩,只用了几行代码就实现了.太厉害了
    ==
    那就mark一个
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 23:28:4227楼 得分:0
    MARK
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiao5213
    • 等级:
    发表于:2008-06-03 23:34:0328楼 得分:0
    引用 11 楼 yagebu1983 的回复:
    关注+学习!!
    帮你顶!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-16 14:25:4229楼 得分:0
    标记一下以后再看
    修改 删除 举报 引用 回复

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