"窗体加载闪烁处理、无边框窗体的移动" 之 配餐系统的开发_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > "窗体加载闪烁处理、无边框窗体的移动" 之 配餐系统的开发

"窗体加载闪烁处理、无边框窗体的移动" 之 配餐系统的开发

 2011/1/9 9:18:58  springsmile_zxc  http://springsmile-zxc.javaeye.com  我要评论(0)
  • 摘要:本文主要跟大家分享在‘配餐系统’开发中遇到的问题和处理,并且会在以后的时间里,写此项目的经验总结,希望能对你有所帮助!1.窗体加载闪烁处理——这个问题可能大家在做winform应用程序开发中会经常碰到的问题,只是有些窗体闪烁的问题比较明显和严重——这时我们可以采取优化方法,比如:压缩窗体中图片的大小(如果窗体中有使用图片)...,但是可能我们尝试着去优化,发现问题并没有得到较大的改善,下面就此项目中的这种问题的处理方法的说明:——图1——图2上面两个图分别对应的是:登录(FrmLogin
  • 标签:开发

? 本文主要跟大家分享在 ‘配餐系统’开发中 遇到的问题和处理,并且会在以后的时间里,写此项目的经验总结,希望能对你有所帮助!

????? 1.窗体加载闪烁处理 ——这个问题可能大家在做winform应用程序开发中会经常碰到的问题,只是有些窗体闪烁的问题比较明显和严重 ——这时我们可以采取优化方法,比如:压缩窗体中图片的大小(如果窗体中有使用图片)...,但是可能我们尝试着去优化,发现问题并没有得到较大的改善,下面就此项目中的这种问题的处理方法的说明:

????? ?——图1

???? ——图2

??????? 上面两个图分别对应的是:登录(FrmLogin)和主窗体(使用的是MDI,主窗体实际是:FrmMain(MDI容器)+FrmIndex),由FrmLogin切换到主窗体,如是直接切换,主窗体显示加载时会闪烁的比较明显——因为相当于要同时加载显示 FrmMain(MDI容器)+FrmIndex 这两个窗体,且FrmIndex 窗体中使用了一个大的背景图片。 【处理方法:在FrmLogin中要切换到主窗体时,用timer控制——先设置 主窗体为完全透明,1s(timer时间间隔(在这时间间隔 内 即可完成主窗体的加载))后,再设置 主窗体为不透明】,具体实现代码如下:

?

logs_code_collapse">代码
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->private FrmMain frm = null;

 private void picLoginBox_Click(object sender, EventArgs e)
        {
            IsShowLoading(true);
            this.picLoginBox.Enabled = false;
            this.lblLoading.Text = "系统正在加载中,请稍候...";
            timer_load.Start();
        }

 private void timer_load_Tick(object sender, EventArgs e)
        {
            try
            {
                if (frm!=null)
                {
                    timer_load.Stop();
                    this.Hide();
                    frm.Opacity = 1;//设置窗体正常显示
                    IsShowLoading(false);
                }
                else
                {
                    frm = new FrmMain();
                    frm.Opacity = 0;//设置窗体为完全透明
                    frm.Show();
                    this.TopMost = true;
                }
            }
            catch(Exception ex)
            {
                HandleError(ex);
            }
        }

                    
                
发表评论
用户名: 匿名