动态添加XtraTabControl的page页和子窗体
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页和子窗体的更多相关文章
- jquery-ui-bootstrap动态添加和删除标签页封装【效果更炫】
1.效果图 2.导入js和css <link rel="stylesheet" href="css/bootstrap/css/bootstrap.min.css& ...
- JQuery动态添加多个tab页标签
jQuery是一个兼容多浏览器的js库,核心理念是write less,do more(写的更少,做的更多),jQuery使用户能更方便地处理HTML documents.events.实现动画效果, ...
- EasyUI创建异步树形菜单和动态添加标签页tab
创建异步树形菜单 创建树形菜单的ul标签 <ul class="easyui-tree" id="treeMenu"> </ul> 写j ...
- 动态添加子视图 UIView 的正确方法
很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法 ...
- [转] JQuery UI Tabs 动态添加页签,并跳转到新页签
[From] https://blog.csdn.net/zhangfeng2124/article/details/76672403 需求: 1.tabs默认只有一个页签,但是需要点击某按钮,动态添 ...
- 【iOS开发】动态添加子视图 UIView 的正确方法
很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法 ...
- ContextMenuStrip 动态添加多级子菜单
1.首先要实例化几个ToolStripItem(要为某一父菜单添加几个子菜单就实例化几个):方法如下: /*添加子菜单*/ ToolStripItem ts_1 = new ToolStripMenu ...
- ES6面向对象 动态添加标签页
HTML <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&quo ...
- C#主菜单动态添加子菜单并设置触发事件
我所使用的是devxepress中的主菜单栏时barsubitem控件,想的是在其能够动态添加子菜单栏并能点击触发事件: /// <summary> /// 创建主按钮的子按钮 /// & ...
随机推荐
- ios Programming:The Big Nerd Ranch Guid(6th Edition) (Joe Conway & AARON HILLEGASS 著)
Introduction (已看) Prerequisites What Has Changed in the Sixth Edition? Our Teaching Philosophy How t ...
- 两个简单的API限流实现方案
1, Ngnix限流 Nginx在架构中起到请求转发与负载均衡器的作用.外部req首先到Nginx监听的80端口,然后Nginx将req交给到监听8080端口的APP服务器处理.处理结果再经由Ngin ...
- mysql之 事务prepare 与 commit 阶段分析
打开binlog选项后,执行事务提交命令时,就会进入两阶段提交模式.两阶段提交分为prepare阶段和commit两个阶段.流程如下 :这里面涉及到两个重要的参数:innodb_flush_log_a ...
- linux之 awk
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进 ...
- Linux fdisk普通分区扩容
买了一个orangepi 然后用7.4GB的内存卡,写入了一个lubuntu镜像,用去3.6GB还有3.8GB没有用,因为要编译mt7601u进ubuntu中,需要用到内核文件 但是内核压缩包1.2G ...
- java BufferedReader 与 BufferedWriter
BufferedReader 与 BufferedWriter 字符缓冲输入/输出流,是处理流.意味着使用这两个流需要包装节点流. 如节点流FileReader fr = new FileReader ...
- 免费SMTP邮件服务:Mandrill,Sendgrid,Mailjet,Postmarkapp,MailChimp
免费的SMTP发邮件服务平常几乎都没有怎么关注,Wordpress发邮件几乎用普通的邮箱的SMTP服务就可以完成任务,但是自从用了Discourse.Ghost博客后,发现找到一个合适的.免费配额大的 ...
- MySQL分析数据运行状态利器【SHOW PROCESSLIST】
这个博文,将只是简单的记录一下,我们的数据库操作和使用中,加索引加不上去,分析的过程,其实比较简单,就是看有没有连接进程还在操作表.有的话,将其停掉(不影响业务的场景下). 今天的主角是: SHOW ...
- c# .net WebRequest 始终报域名无法解析
更改本机DNS,flushdns也没效果. 最后通过改.config 禁用代理后正常. (或:WebRequest.Proxy=null;)
- InfluxDB(官方使用说明)
安装InfluxDB OSS 此页面提供有关安装,启动和配置InfluxDB的说明. InfluxDB OSS安装要求 root为了成功完成,需要安装InfluxDB软件包或具有管理员权限. Infl ...