前言

本文主要讲解 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. Android ANR(应用无响应)解决分析【转】

    本文转载自:https://blog.csdn.net/u014630142/article/details/81709459 来自: http://blog.csdn.net/tjy1985/art ...

  2. jpeg库的搭建

    为了在arm版上显示jpg图片,现将libjpeg库移植 我的系统:Manjaro 编译工具:arm-linux-gcc 安装最新 JPEGjpegsrc.v9c.tar.gz 下载链接http:// ...

  3. 【POJ 1179】Polygon

    [原题链接]传送门 [题解思路] 1.第一感觉没有其他做法,想到动态规划,去环,区间dp 2.f[l,r]表示[l,r]内的最大值,考虑转移 3.最大值分加法和乘法,其中乘法不一定由两个要求合并的区间 ...

  4. Autowired(required=true)

    问题原因 没有实现类的接口上添加了@Autowired注解 问题解决 删掉@Autowired注解 bug详情 Description: Field userDAO in com.crab.servi ...

  5. linux下ifconfig命令看不到IP centos7——ens33

    当前环境VMware15+centos7  在终端输入ifconfig后没有开到IP地址: 解决方法:root用户执行命令 cd /etc/sysconfig/network-scripts/ vi ...

  6. Matplotlib.pyplot 把画图保存为图片

    在plt.show()之前执行plt.savefig()函数即可. 简单例子: import matplotlib.pyplot as plt x=[1,2,3,4,5] y=[10,5,15,10, ...

  7. AI外包 人工智能外包 长年承接人工智能项目 北京动点软件

    人工智能artificial intelligence,AI是科技研究中最热门的方向之一.像 IBM.谷歌.微软.Facebook  和亚马逊等公司都在研发上投入大量的资金.或者收购那些在机器学习.神 ...

  8. Kotlin 枚举类

    枚举类最基本的用法是实现一个类型安全的枚举. 枚举常量用逗号分隔,每个枚举常量都是一个对象. enum class Color{ RED,BLACK,BLUE,GREEN,WHITE } 枚举初始化 ...

  9. 融云(API)

    先记录下融云API地址:真是难找 IMKit: https://www.rongcloud.cn/docs/api/android/imkit/index.html IMLib: https://ww ...

  10. Js浮点运算存在精度问题

    记得在某一次项目中,运用js进行一系列算数运算,计算中会存在浮点类型,就单纯的进行了计算,最后在测试过程中,主管在核对数据的时候发现计算的结果是有问题的,于是就很纳闷,在网上搜索找到了答案  ,htt ...