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