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

来源:互联网 发布:入侵赌博网站修改数据 编辑:程序博客网 时间:2024/04/30 06:03

进入飞鱼框架后,软件会根据系统设定的用户常用模块自动为用户打开,在打开的过程中增加了一个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 页                }            }        }


 

 

0 0
原创粉丝点击