前言

本文主要讲解 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 如何将关闭子窗体改为收回主窗体内的更多相关文章

  1. DEV 控件使用之:TreeList

    使用DEV控件也有一段时间了,一直想写点东西.最近又使用到TreeList控件,这个控件对于刚使用的人来说确实不好掌握.我想把自己知道的写下来,让还不熟悉的慢慢学会使用,对于会使用的大家交流下.如果有 ...

  2. dev 控件的treelist

    最近项目中要求用dev 控件的treelist 树形控件. 如下图 要求如下: 1:选择父节点后,子节点全部打钩: 2:选择子节点而不选择父节点,则从当前节点的父节点一直到根节点check框都是半选状 ...

  3. VS中Dev控件在工具箱里的不见的解决办法

    出现问题:调整了VS中Dev控件后(以免生成程序每次都要在客户机上面注册dev),之前安装的DEV控件在vs工具箱中消失了,重装可以解决,但是太费时间了,检测dev自带的设置,找到了解决办法. 解决办 ...

  4. Dev控件GridView单元格绑定控件

    Dev控件GridView单元格绑定控件 //文本按钮 RepositoryItemButtonEdit btnFields = new RepositoryItemButtonEdit();//创建 ...

  5. DEV控件中GridView中的复选框与CheckBox实现联动的全选功能

    最初的界面图如图1-1(全选框ID: cb_checkall  DEV控件名称:gcCon ): 要实现的功能如下图(1-2  1-3  1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...

  6. DEV控件Grid显示行号

    DEV控件Grid的显示行号需要通过一个事件来设置,具体设置代码为: private void gridView1_CustomDrawRowIndicator(object sender, DevE ...

  7. ParentWindow属性及其一系列函数的作用——适合于那些不需要父控件管理内存释放的子控件

    TWinControl = class(TControl) property ParentWindow: HWnd read FParentWindow write SetParentWindow; ...

  8. DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents

    上一节,已经介绍了ASPxGridView的自定义列和基本事件 ,本节接着将介绍Dev控件的客户端事件模型. 在上节示例基础上,我们增加一行菜单,使用Dev的ASPxMenu来实现,如下图所示. 图一 ...

  9. DEV控件的Gridview1

    DEV控件的Gridview小技巧总结 1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].O ...

随机推荐

  1. 阿里云ECS相关

    RAM授权: https://help.aliyun.com/document_detail/28639.html 安全组: https://jingyan.baidu.com/article/afd ...

  2. Python链接Oracle数据库

    说明:以下所需安装的所有软件版本必须跟系统一致,即系统是64位,软件就得是64位,否则会出现各种链接报错的情况. 现以64位系统,python 3.6.5  64位为例: (一)安装cx_Oracle ...

  3. 微信小程序复选框实现 多选一功能

    功能实现界面 data: { checkboxItems: [ { name: '全天(1-8节)', value: 'allday' }, { name: '上午(1-4节)', value: 'a ...

  4. 20165306 Exp6 信息搜集与漏洞扫描

    Exp6 信息搜集与漏洞扫描 一.实践内容概述 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 搜索网址目录结构 搜索特定类型的文件 搜索E-Ma ...

  5. TCGA一些数据库

    最出名,http://www.cbioportal.org/ 特色:最基本的简单分析基因突变.共表达/共突变的基因,下载数据也可以,最常看的应该还是oncoPrint那个. 详细用法:TCGA数据库的 ...

  6. BeanUtils的copyproPerties方法的用法

    转自:Hassan Blog的博客 一.简介:  BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包 ...

  7. 第 10 章 容器监控 - 079 - 监控利器 sysdig

    sysdig 是一个轻量级的系统监控工具,同时它还原生支持容器. 通过 sysdig 我们可以近距离观察 linux 操作系统和容器的行为. Linux 上有很多常用的监控工具,比如 strace,t ...

  8. ZooKeeper如何完成分布式锁?

    * 面试答案为LZ所写,如需转载请注明出处,谢谢. 1.最基本的思路: 将<local_ip>:<task_id>存在某个路径节点里. 刚开始并没有这个节点,当有executo ...

  9. mysql查表的时候报错:java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timest

    在spark项目中读取mysql中的数据的时候,发生了报错: 原因:主要是因为数据库中有一些字段为null,无法进行转换: 上面字段那种,我的inserttime字段类型为timestamp类型,不为 ...

  10. caffe win添加新层

    1.编写.h和.cpp .cu文件 将.hpp文件放到路径caffe-windows\caffe-master\include\caffe\layers下 将.cpp文件和.cu放到路径caffe-w ...