您的位置:首页 > 其它

飞鱼开发框架(二) 进入主界面自动打开用户常用模块窗口(图文)

2013-12-10 11:07 411 查看
进入飞鱼框架后,软件会根据系统设定的用户常用模块自动为用户打开,在打开的过程中增加了一个Loading图层提示用户进行等待。

初始进入,开始打开工作台窗口:



正在打开的过程中:



打开结束:





在打开窗口的过程中,实际程序这行这个动作应该是很快的,即使窗口多一点如果不对其控制的话也是转瞬就会完成,容易造成用户还没看明白怎么回事,就已经完成了这个打开的过程。

为了让用户有更好的体验,知道系统在做什么,这里除了添加Loading层进行提示外,在系统中进行了特殊设置,把这个打开的过程拉长,即使用时间控件设置为每0.3秒打开一个窗口,直到所有窗口都打开完毕后关闭Loading层。



先取出需要打开窗口的DataSet(这个用户控制台窗口的配置在下一篇中会讲到):

//窗口对应的ds 提出取来 为了延时 启动时执行一次
        private void OpenDBGetDS()
        {
            try
            {
                string sqlList = @"SELECT 
                                       [menuText],  [WindowClassName]
                                  FROM [VW_Authority_Workbench] 
                                  where userid=" + UserHelper.Id + " order by showOrder";
                ds = no1.common.CommonDataSet.GetDataSet(sqlList);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.StackTrace);
            }
        }



增加Timer控件,延时300,即0.3秒执行一下打开窗口的动作,动作代码:

//延时弹窗timer
        private void tmOpenFormDelay_Tick(object sender, EventArgs e)
        {
            //记录集为空 取消执行
            if (ds.Tables[0].Rows.Count==0)
            {
                tmOpenFormDelay.Enabled = false;

                blAlreadySetWorkbenchWindow = false;
            }

            if (i < ds.Tables[0].Rows.Count)
            {
                OpenMyWorkbench(sender, e);
                i++;
            }
            else
            {   
                //已全部循环弹窗,结束处理

                this.tmOpenFormDelay.Enabled = false;
                i = 0;

                plLoading.Visible = false;
                this.Cursor = Cursors.Default;
            }
        }


打开窗口的动作:

//打开工作台下全部窗口
        private void OpenMyWorkbench(object sender, EventArgs e)
        {
            try
            {
                    string menuText = ds.Tables[0].Rows[i]["menuText"].ToString();
                    string windowClassName = ds.Tables[0].Rows[i]["WindowClassName"].ToString();

                    // 反射生成窗体
                    Form fm = (Form)Assembly.GetExecutingAssembly().CreateInstance(windowClassName);

                    //添加选项卡
                    TabPage TabPageCity1 = new TabPage(menuText);
                    TabPageCity1.Name = "KKK";
                    this.tabControl1.TabPages.Add(TabPageCity1);

                    //设置窗体没有边框 加入到选项卡中
                    fm.FormBorderStyle = FormBorderStyle.None;
                    fm.TopLevel = false;
                    fm.Parent = TabPageCity1;
                    fm.ControlBox = false;
                    fm.Dock = DockStyle.Fill;                 

                    fm.Show();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.StackTrace);
            }
        }


打开的选项卡,用户可以根据需要自行关闭其中一个或者全部关闭,在选项卡上点击右键会弹出相应菜单:



全部关闭代码:

//关闭全部选项卡 除首页卡
        private void tsmCloseAll_Click(object sender, EventArgs e)
        {
            foreach (TabPage tp in this.tabControl1.TabPages)
            {
                if (tp.Text.Contains("系统首页"))
                {
                    ucWinIndexTopTitle1.LbTitle.Text = "";
                }else
                {
                    tp.Dispose();   //关闭全部tabpage 页
                }
            }
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐