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 ...
随机推荐
- Vue学习——学习vue必须了解的几个知识点
node.js介绍 Node 是一个让 JavaScript 运行在服务端的开发平台,使用JavaScript也可以开发后台服务.说明白些它仅仅是一个平台,我们使用vue开发必须要安装node.js. ...
- L1,L2正则化代码
# L1正则 import numpy as np from sklearn.linear_model import Lasso from sklearn.linear_model import SG ...
- 开发过程中 的一些 补充知识点 + 关于mysql中的日期和时间函数?
参考: https://www.jb51.net/article/23966.htm https://yq.aliyun.com/articles/260389 mysql中的 日期格式是: HHHH ...
- 强杀apt-get install进程导致错误的修复办法
关闭了一个安装缓慢的apt-get install终端窗口,安装另一个软件,提示打不开var下的一个锁(没加sudo也是这个错误但会提示是非root用户权限不够导致,但这里不是这个问题),说是另一个进 ...
- 【新特性】JDK10
一.局部变量类型推断 很多人抱怨Java是一种强类型,需要引入大量的样板代码.甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的.许多流行的编程语言都已经支持某种形 ...
- buaacoding_2018算法期末上机G题.地铁建设题解
// 标注:本文旨在为博主确立一种题解的基本范式,以避免博主的题解流于AC代码的粘贴.此基本范式为:完整而简洁明了的思路及其推导说明,力图触及问题的本质并衍生对同类问题的思路分析,使得题解具有泛用性, ...
- IOS runtime运行机制详解(一)
OC运行机制是指,可以运行的时候动态调用函数.因为C语言必须在编译的时候就决定调用哪个函数. 我们平时写的OC代码,它在运行的时候也是转换成了runtime的方式运行的.任何方法调用本质:就是发送一个 ...
- Codeforces 799 D. Field expansion
题目链接:http://codeforces.com/contest/799/problem/D 因为${a_i>=2}$那么一个数字至多操作${log_{2}^{max(a,b)/min(h, ...
- 创建X个任意元素数组并且可以遍历的的一个方法
方法一: Array.apply(null, { length: 20 })分析:apply 第二个参数应该是数组,现在把 { length: 20 } 转化为数组,就是一个长度为X的数组(类数组对象 ...
- Java实训课