dev控件 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内
前言
本文主要讲解 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内,顺便附上Float(浮动)的时候使窗体最大化,及指定只能某一个子窗体能浮动放大. 下面进入正题.
一、首先讲解,如何设置允许 拖动xtraTabbedMdiManager中的Page标题及双击Page标题都可以Float(浮动)
1、设置xtraTabbedMdiManager中的子窗体允许拖动Page标题实现浮动
右击xtraTabbedMdiManager选择属性,找到 FloatOnDrag属性,然后设置为True即可。
2、设置xtraTabbedMdiManager中的子窗体允许双击Page标题实现浮动
右击xtraTabbedMdiManager选择属性,找到 FloatOnDoubleClick属性,然后设置为True即可。
注意:序列1及序列2的设置只针对当xtraTabbedMdiManager的Page列表中有多个窗体时才管用.否则无论是双击还是拖动page都没效果. 那么如何实现只有一个page的时候也能实现双击或者拖动让其窗体Float(浮动)呢? 我们只需要 xtraTabbedMdiManager的BeginFloatin事件中加上这么一句代码即可. e.Cancel=false; 如下代码所示:
private void xtraTabbedMdiManager1_BeginFloating(object sender, DevExpress.XtraTabbedMdi.FloatingCancelEventArgs e)
{
e.Cancel = false;
}
二、如何使浮动后的子窗体全屏放大,并且去边框.
方法一:我们可写xtraTabbedMdiManager的BeginFloatin事件,只需要接着上面代码,在代码中加上如下代码. (仅能放大不能去边框)
private void xtraTabbedMdiManager1_BeginFloating(object sender, DevExpress.XtraTabbedMdi.FloatingCancelEventArgs e)
{
e.Cancel = false;//当xtraTabbedMdiManager列表只有一个Page子窗体时, 要想浮动子窗体必须设置此属性.
e.ChildForm.WindowState = FormWindowState.Maximized;//放大子窗体
}
方法二:写xtraTabbedMdiManager的Floating事件,(既能放大又能去边框),但是BeginFloating中的e.Cancel=false;不能注视掉. 可分开写, 也可把BeginFloating事件中放大的代码注释,同去边框代码一起写到此事件中,如下代码:
private void xtraTabbedMdiManager1_Floating(object sender, DevExpress.XtraTabbedMdi.FloatingEventArgs e)
{
e.ChildForm.WindowState = FormWindowState.Maximized;//全屏放大子窗体(此窗体中写了,BeginFloating中可以不写此句代码)
e.ChildForm.FormBorderStyle = FormBorderStyle.None;//去除子窗体边框
}
三、如何使放大后子窗体缩小或者关闭的时候回到主窗体体内
1、放大后的子窗体关闭的时回到主窗体体内(没去边框的情况下) , 写Floating事件, 如下代码:
private void xtraTabbedMdiManager1_Floating(object sender, DevExpress.XtraTabbedMdi.FloatingEventArgs e)
{
e.ChildForm.WindowState = FormWindowState.Maximized;//全屏放大子窗体(此窗体中写了,BeginFloating中可以不写此句代码)
//当前浮动窗体的关闭事件
e.ChildForm.FormClosing += (s, es) =>
{
if (xtraTabbedMdiManager1.ActiveFloatForm == (s as Form))
{
es.Cancel = true;
e.ChildForm.MdiParent = this;//指定其父窗体
xtraTabbedMdiManager1.FloatForms.Remove(s as Form);//使此窗体中浮动的集合中移除
}
};
}
2、放大后的子窗体关闭的时回到主窗体体内(去边框的情况下) , 依然写Floating事件, 如下代码:
主要实现思路就是, 当你放大子窗体并且去掉边框之后, 因为子窗体没有任何操作按钮,你压根无法通过点击关闭按钮使其响应关闭事件实现使子窗体回到主窗体体内. 那么我这里介绍的是通过双击子窗体使其在子窗体的双击事件中响应窗体关闭事件,从而达到让子窗体回到主窗体内. 代码如下:
private void xtraTabbedMdiManager1_Floating(object sender, DevExpress.XtraTabbedMdi.FloatingEventArgs e)
{
e.ChildForm.WindowState = FormWindowState.Maximized;//全屏放大子窗体(此窗体中写了,BeginFloating中可以不写此句代码)
e.ChildForm.FormBorderStyle = FormBorderStyle.None;//去除子窗体边框
//当前浮动窗体的关闭事件,也就使其回到主窗体内
e.ChildForm.FormClosing += (s, es) =>
{
if (xtraTabbedMdiManager1.ActiveFloatForm == (s as Form))
{
es.Cancel = true;
e.ChildForm.MdiParent = this;//指定其父窗体
xtraTabbedMdiManager1.FloatForms.Remove(s as Form);//使此窗体中浮动的集合中移除
}
};
//响应当前浮动窗体的双击事件
e.ChildForm.DoubleClick += (a,b) =>
{
//直接结束当前浮动窗体也就相当于响应了此窗体的关闭事件.
e.ChildForm.Close();
};
}
注意:当你浮动并放大子窗体后, 你会发现我们通过alt+Tab切换或者别的方式居然还能操作主窗体界面, 这样是不是有点不太友好呢? 那么我们只需要在浮动放大的时候将子窗体隐藏, 回到主窗体的时候再显示主窗体. 可以通过 this.Visible = true;及 this.Visible=false;来实现.
四、指定只能某个子窗体才能浮动并且放大
只需要在xtraTabbedMdiManager的BeginFloatin事件第一句加个判断即可. 如下代码:
private void xtraTabbedMdiManager1_BeginFloating(object sender, DevExpress.XtraTabbedMdi.FloatingCancelEventArgs e)
{
//只让指定的窗体浮动并且放大.
if (e.ChildForm.Text != "此处填写窗体名字") { e.Cancel = true; return; }
e.Cancel = false;//当xtraTabbedMdiManager列表只有一个Page子窗体时, 要想浮动子窗体必须设置此属性.
e.ChildForm.WindowState = FormWindowState.Maximized;//放大子窗体 }
至此, 关于dev控件 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内以及双击回到主窗体内及相关功能的代码介绍完毕. 如有错误请指出,谢谢大家了. 如还有相关方面问题的请在此博客中留言, 看到会第一时间回复大家.
dev控件 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内的更多相关文章
- DEV 控件使用之:TreeList
使用DEV控件也有一段时间了,一直想写点东西.最近又使用到TreeList控件,这个控件对于刚使用的人来说确实不好掌握.我想把自己知道的写下来,让还不熟悉的慢慢学会使用,对于会使用的大家交流下.如果有 ...
- dev 控件的treelist
最近项目中要求用dev 控件的treelist 树形控件. 如下图 要求如下: 1:选择父节点后,子节点全部打钩: 2:选择子节点而不选择父节点,则从当前节点的父节点一直到根节点check框都是半选状 ...
- VS中Dev控件在工具箱里的不见的解决办法
出现问题:调整了VS中Dev控件后(以免生成程序每次都要在客户机上面注册dev),之前安装的DEV控件在vs工具箱中消失了,重装可以解决,但是太费时间了,检测dev自带的设置,找到了解决办法. 解决办 ...
- Dev控件GridView单元格绑定控件
Dev控件GridView单元格绑定控件 //文本按钮 RepositoryItemButtonEdit btnFields = new RepositoryItemButtonEdit();//创建 ...
- DEV控件中GridView中的复选框与CheckBox实现联动的全选功能
最初的界面图如图1-1(全选框ID: cb_checkall DEV控件名称:gcCon ): 要实现的功能如下图(1-2 1-3 1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...
- DEV控件Grid显示行号
DEV控件Grid的显示行号需要通过一个事件来设置,具体设置代码为: private void gridView1_CustomDrawRowIndicator(object sender, DevE ...
- ParentWindow属性及其一系列函数的作用——适合于那些不需要父控件管理内存释放的子控件
TWinControl = class(TControl) property ParentWindow: HWnd read FParentWindow write SetParentWindow; ...
- DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents
上一节,已经介绍了ASPxGridView的自定义列和基本事件 ,本节接着将介绍Dev控件的客户端事件模型. 在上节示例基础上,我们增加一行菜单,使用Dev的ASPxMenu来实现,如下图所示. 图一 ...
- DEV控件的Gridview1
DEV控件的Gridview小技巧总结 1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].O ...
随机推荐
- 将markdown文档使用gulp转换为HTML【附带两套css样式】
将markdown文档使用gulp转换为HTML[附带两套css样式] 今天遇到一个需求,即将Markdown文档转为为HTML在网页展示,身为一名程序员,能用代码解决的问题,手动打一遍无疑是可耻的. ...
- Bootstrap3基础 栅格系统 标尺(col-lg/md/sm/xs-1)
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- [CTF] RSA共模攻击
from gmpy2 import * import libnum n = 0x00b0bee5e3e9e5a7e8d00b493355c618fc8c7d7d03b82e409951c182f398 ...
- 如何安装mariadb服务器和解决 can't connect to local mysql server through socket...
故障现象, ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.s ...
- Polly 重试策略
工作原理 Retry 基本重试: public static void Retry() { var random = new Random(); // Policy<> 泛型定义返回值类型 ...
- POJ 1061 青蛙的约会(拓展欧几里得)
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #i ...
- 使用loadrunner编写webservice接口请求
1.使用工具: loadrunner12,本实例截图中都是loadrunner12工具 2.操作步骤: 1).新建脚本,选择Web Services协议: 2).选择工具栏: 3).点击Import, ...
- DAY 22初识面向对象
一.两种编程思想 1.面向过程编程 核心是'过程',过程指的是解决问题的步骤,就是先干什么再干什么 基于面向过程思想编写程序相当于写一条流水线,是一种机械式的思维方式 优点:解决问题的思路清晰,可以把 ...
- vsphere client/web client 开启ESXi SSH服务
●vsphere client 开启ESXi SSH服务 1,从主机和群集列表选择主机esxi01.2,选择[配置]-->[软件]列表-->[安全配置文件]--> [服务],点击右上 ...
- Keepalive配置说明
配置文件 [root@lb01 keepalived]# cat keepalived.conf ! Configuration File for keepalived global_defs { n ...