/// <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;
}

示例图

c/s winForm框架 tabpage标签切换窗体的更多相关文章

  1. winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)

    http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已 ...

  2. 代码生成工具更新--快速生成Winform框架的界面项目

    在之前版本的代码生成工具Database2Sharp中,由于代码生成都是考虑Winform和Web通用的目的,因此Winform界面或者Web界面都是单独生成的,在工具中生成相应的界面后,复制到项目里 ...

  3. 使用 SailingEase WinForm 框架构建复合式应用程序(插件式应用程序)

    对于一些较小的项目,具备一定经验的开发人员应该能够设计和构建出便于进行维护和扩展的应用程序.但是,随着功能模块数量(以及开发维护这些部件的人员)的不断增加,对项目实施控制的难度开始呈指数级增长. Sa ...

  4. JS特效之Tab标签切换

    在我们平时浏览网站的时候,经常看到的特效有图片轮播.导航子菜单的隐藏.tab标签的切换等等.这段时间学习了JS后,开始要写出一些简单的特效.今天我也分享一个简单tab标签切换的例子.先附上代码: HT ...

  5. 基于Winform框架DataGridView控件的SqlServer数据库查询展示功能的实现

    关键词:Winform.DataGridView.SqlServer 一个基于winform框架的C/S软件,主要实现对SqlServer数据库数据表的实时查询. 一.为DataGridView添加数 ...

  6. 任务驱动,对比式学习.NET开发系列之开篇------开源2个小框架(一个Winform框架,一个Web框架)

    一 源码位置 1. Winform框架 2. web框架 二 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分人学习软件开发技术是通过看书,看视频,听老师上课的方式.这些方式有一个共同点即按知 ...

  7. 每天一个JavaScript实例-tab标签切换

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理

    在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...

  9. 使用SuperSlide 实现标签切换

    小颖之前还写过一篇jquery实现标签切换的文章  jquery实现Tab选项卡菜单 今天小颖逛博客园时看到了用SuperSlide 实现标签切换的文章,所以小颖就自己试了下,试了后发现SuperSl ...

  10. NBIbatis web/winform框架

    Web框架 调用Bussiness和DataAccess可参考微信框架的后台. Pages/Meeting/MeetingList.aspx Pages/Meeting/MeetingEdit.asp ...

随机推荐

  1. https代理服务器(四)java动态签发【失败】

    https://zhuanlan.zhihu.com/p/355241710?utm_id=0 http://t.zoukankan.com/xiaxj-p-8961131.html https:// ...

  2. SAP物料类型

    1.物料主数据界面设置行业领域默认值并隐藏行业领域 2.物料类型设置:主要控制视图需要维护的部门,是否可以采购,及是否进行数量或者价值更新等操作 spro --> 后勤常规--> 物料主数 ...

  3. Java注解及应用原理

    视频地址:https://www.bilibili.com/video/BV1Py4y1Y77P/?spm_id_from=333.337.search-card.all.click&vd_s ...

  4. Unit mysqld.service could not be found.

    具体命令 service mysqld status systemctl status mysqld 结果 Unit mysqld.service could not be found. 查看mysq ...

  5. ASP.NET MVC 返回文件

    将文件写入Response public ActionResult Zip() { string fname = Server.MapPath("~\\App_Data\\TestDB.zi ...

  6. SQL Server数据库备份和还原

    当需要将一台机器(源机器)上的一个数据库完全复制到另一台机器(目标机器)上时,可以选择先在源机器上备份该数据库,然后在目标机器上还原该备份的方法. 备份 打开SQL server management ...

  7. Vue 收集表单数据-输入input,单选radio,多选checkbox,下拉框select ,以及v-model的3个修饰符(lazy,number,trim)

    From案例分析: 1.Html 部分: <form @submit.prevent="" style=" border: 1px solid rgb(109, 2 ...

  8. windows下判断程序是否内存泄漏

    在main函数第一行写 _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); 程序退出后如果有泄漏会有打印

  9. JS学习-Promise

    Promise 一个 Promise 必然处于以下几种状态之一: 待定(pending): 初始状态,既没有被兑现,也没有被拒绝. 已兑现(fulfilled): 意味着操作成功完成. 已拒绝(rej ...

  10. Mac下Apache Tomcat安装配置技巧

    我们在MAC系统中查看网页时,一般都要使用到tomcat,这是因为appache只支持静态网页,但像asp,php,cgi,jsp等动态就需要tomcat来处理.那么该怎么在自己的MAC中安装tomc ...