c/s winForm框架 tabpage标签切换窗体
/// <summary>
/// 根据窗体Name打开窗体
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public Form FindForm(string name)
{
Assembly assembly = Assembly.GetExecutingAssembly();
// 实例化窗体
Form form = assembly.CreateInstance(DBConfig.GetConfigValue("Namespace") + name) as Form;
return form;
}
/// <summary>
/// 左侧菜单树点击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node.Tag != null)
{
Form FormChild = FindForm(e.Node.Tag.ToString());
if (FormChild != null)
{
ShowChildForm(FormChild);
}
//else
//{
// MessageBoxEx.Show("当前窗体不存在");
//}
}
}
/// <summary>
/// 窗体切换
/// </summary>
/// <param name="form"></param>
private void ShowChildForm(Form form)
{
if (!FindTabPageForm(form.Name))
{
//获取能打开的窗体数
int sysTabPageNum =T2THelper.ToInt32(DBConfig.GetConfigValue("sysTabpageNum"), 5);
if (sysTabPageNum > tabControl1.TabPages.Count)
{
TabPage tp = new TabPage();
//将form的名称给tabpage
tp.Name = form.Name;
tp.Text = form.Text;
tabControl1.TabPages.Add(tp);
tabControl1.SelectedTab = tp;
form.FormBorderStyle = FormBorderStyle.None;
form.MdiParent = this;
//这比较关键,给出窗体的父容器为tabpage
form.Parent = tp;
form.Dock = DockStyle.Fill;
form.Show();
}
else
{
MessageBoxEx.Show("您好\r\n只能同时打开" + sysTabPageNum.ToString() + "个窗口,请关于其他窗口后再打开", "提醒");
}
}
else
{
tabControl1.SelectedTab = GetTabPageForm(form.Name);
}
}
/// <summary>
/// 判断TabPage是否已经打开
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public bool FindTabPageForm(string name)
{
foreach (TabPage tp in tabControl1.TabPages)
{
if (name == tp.Name)
{
return true;
}
}
return false;
}
示例图
最新文章
- 信息安全系统设计基础实验四 20135210&;20135218
- Substance风格实例大全javaswing皮肤风格大全(原)
- 5.4.2 使用配置启动firefox
- VB中的GDI编程-2 画笔
- PCI和PCIE插槽有什么区别?
- MySQL 视图技术
- 给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数。
- centos7最小化安装系统
- Android事件分发流程总结
- Spring使用原生JDBC
- c#之如何操作excel
- What is event bubbling and capturing?
- Delphi实现软件中登录用户的操作权限
- socket 长连接
- js类型判断的方法
- lnmp之nginx1.10.2安装
- 免费获取 Kaspersky Small Office Security 90 天授权
- 在Asp.Net Core中取得物理路径
- myBatis + SpringMVC上传、下载文件
- date ";+Y-%m-%d %H:%M";