using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraTab; namespace ZL.BidMain.FormBuild
{
public class CreateForm
{ private static Dictionary<string, XtraTabPage> TabPageDic = new Dictionary<string, XtraTabPage>(); private static CreateForm form = null;
private CreateForm(){} static CreateForm()
{
form = new CreateForm();
}
public static CreateForm FormOper
{
get
{
return form;
}
} /// <summary>
/// 新增选项卡页
/// </summary>
/// <param name="tabControl">选项卡控件</param>
/// <param name="tabPageName">当期选项卡页name名称</param>
/// <param name="tabText">当前选项卡页Text标题</param>
/// <param name="newFormName">当前选项卡中的新窗体</param>
public void AddTabpage(XtraTabControl tabControl, string tabPageName, string tabText, string newFormName)
{
if (IsTabpageExsit(tabControl, tabPageName))
{
return;
}
XtraTabPage newPage = new XtraTabPage();
newPage.Name = tabPageName;
newPage.Text = tabText;
newPage.Tooltip = tabPageName;
newPage.Controls.Add(AddNewForm(newFormName));
tabControl.TabPages.Add(newPage);
TabPageDic.Add(tabPageName, newPage);
tabControl.SelectedTabPage = newPage;
} /// <summary>
/// 移除选项卡页
/// </summary>
/// <param name="tabControl"></param>
/// <param name="tabPageName"></param>
/// <param name="e"></param>
public void RemoveTabPage(XtraTabControl tabControl,EventArgs e)
{
DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs args = (DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs)e;
string name = args.Page.Tooltip;
foreach (XtraTabPage item in tabControl.TabPages)
{
if (item.Name==name)
{
tabControl.TabPages.Remove(item);
item.Dispose();
TabPageDic.Remove(name);
return;
}
}
} /// <summary>
/// 判断选项卡是否已经存在
/// </summary>
/// <param name="tabControl">选项卡控件</param>
/// <param name="tabPageName">选项卡名称</param>
/// <returns></returns>
private bool IsTabpageExsit(XtraTabControl tabControl,string tabPageName)
{
foreach (var item in TabPageDic)
{
if (item.Key== tabPageName)
{
tabControl.SelectedTabPage = item.Value;
return true;
}
}
return false;
} /// <summary>
/// 在选项卡中生成窗体
/// </summary>
/// <param name="form">窗体名称</param>
private Form AddNewForm(string formName)
{
Form newForm = (Form)Assembly.GetExecutingAssembly().CreateInstance(formName);
newForm.FormBorderStyle = FormBorderStyle.None;
newForm.TopLevel = false;
//newForm.Parent = ((XtraTabControl)sender).SelectedTabPage;
newForm.ControlBox = false;
newForm.Dock = DockStyle.Fill;
newForm.Visible = true;
return newForm;
}
}
}

动态添加XtraTabControl的page页和子窗体的更多相关文章

  1. jquery-ui-bootstrap动态添加和删除标签页封装【效果更炫】

    1.效果图 2.导入js和css <link rel="stylesheet" href="css/bootstrap/css/bootstrap.min.css& ...

  2. JQuery动态添加多个tab页标签

    jQuery是一个兼容多浏览器的js库,核心理念是write less,do more(写的更少,做的更多),jQuery使用户能更方便地处理HTML documents.events.实现动画效果, ...

  3. EasyUI创建异步树形菜单和动态添加标签页tab

    创建异步树形菜单 创建树形菜单的ul标签 <ul class="easyui-tree" id="treeMenu"> </ul> 写j ...

  4. 动态添加子视图 UIView 的正确方法

    很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法 ...

  5. [转] JQuery UI Tabs 动态添加页签,并跳转到新页签

    [From] https://blog.csdn.net/zhangfeng2124/article/details/76672403 需求: 1.tabs默认只有一个页签,但是需要点击某按钮,动态添 ...

  6. 【iOS开发】动态添加子视图 UIView 的正确方法

    很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法 ...

  7. ContextMenuStrip 动态添加多级子菜单

    1.首先要实例化几个ToolStripItem(要为某一父菜单添加几个子菜单就实例化几个):方法如下: /*添加子菜单*/ ToolStripItem ts_1 = new ToolStripMenu ...

  8. ES6面向对象 动态添加标签页

    HTML <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&quo ...

  9. C#主菜单动态添加子菜单并设置触发事件

    我所使用的是devxepress中的主菜单栏时barsubitem控件,想的是在其能够动态添加子菜单栏并能点击触发事件: /// <summary> /// 创建主按钮的子按钮 /// & ...

随机推荐

  1. git和gulp使用

    git push origin master/chunxiong git remote -v git merge chunxiong working tree:就是你所工作在的目录,每当你在代码中进行 ...

  2. MongoDB之 的Rollback讲解及避免

    首先,rollback到底是什么意思呢?在关系型数据库中因为有事务的概念,操作数据后在没有commit之前是可以执行rollback命令进行数据回退的. 而在单实例mongodb中,写入就写入了,删除 ...

  3. vue-cli 2.x 项目优化之:引入本地静态库文件

    demo地址:https://github.com/cag2050/vue_cli_optimize_static_resource vue-cli 将静态资源文件放到 static 文件夹下并引用: ...

  4. create-react-app 搭建的项目中,让 antd 通过侧边栏导航 Menu 的 Menu.Item 控制 Content 部分的变化

    第一种:BrowserRouter把Menu和Route组给一起包起来 <Router></Router> 标签要把Menu和Route组给一起包起来 修改src/index. ...

  5. show master status, show slave status中的Executed_Gtid_Set

    slave 如果server是slave节点,在server上执行show master staus与show slave status显示的Executed_Gtid_Set是一样的. slave也 ...

  6. Hbase Shell命令详解+API操作

    HBase Shell 操作 3.1 基本操作1.进入 HBase 客户端命令行,在hbase-2.1.3目录下 bin/hbase shell 2.查看帮助命令 hbase(main):001:0& ...

  7. Hadoop YARN上运行MapReduce程序

    (1)配置集群 (a)配置hadoop-2.7.2/etc/hadoop/yarn-env.sh 配置一下JAVA_HOME export JAVA_HOME=/home/hadoop/bigdata ...

  8. MySQL状态变量详解

    MySQL状态变量详解 mysql的状态变量(status variables)记录的mysql服务器的运行状态信息.查看语法如下: SHOW [GLOBAL | SESSION] STATUS; S ...

  9. SQL2008:WITH MOVE 子句可用于重新定位一个或多个文件

    sql2008数据库 还原备份文件还原产生这个错误的原因是:还原目录下存在多个同名文件, 如图所示,只需要将第2个以及以后的mdf文件改成其它名字就行了,比如s.mdf,s1.mdf等等.

  10. 通过Hibernate API编写访问数据库的代码

    private Configuration config;// 1.声明私有配置对象类private ServiceRegistry serviceRegistry;// 2.声明私有服务注册对象类p ...