VisualC#中MDI窗体初步

visual

在VB中做 MDI窗体很简单。在C#里就没有这个轻松了,不过还是很方便的。

首先在C#里添加一个窗体,命名为MdiMain,将其IsMdiContainer设定成true,这样MDI主窗体就建立了。然后再添加新窗体,命名为MdiChild。现在运行程序,会发现只运行了MdiMain这个主窗体。呵呵因为我们没有写任何代码,第二个窗体当然不能出现了。现在来添加这个代码。

在MdiMain窗体上添加一个Menu,然后随便写个子菜单。双击子菜单,会出现它的Click事件,在这个事件内写如下代码:

MdiChild frmMdiChild=new MdiChild();
frmMdiChild.MdiParent=this;
frmMdiChild.Show();

这样在单击菜单项的时候就能显示MdiChild这个窗体了。但是这样会出现一个问题,就是说如果我按两次那个菜单项就会出现两个MdiChild窗体,呵呵,这是因为在C#中窗体就是一个Class,用刚才的代码就新建了一个MdiChild的实例。所以你按几次菜单项就会出现几个窗体了。控制的方法之一就是写一个变量,来存放是否打开了这个窗体,如果打开了就不继续执行了。这个小代码还是很简单的。

如果想通过程序关闭MdiChild窗体,只需在MdiChild里添加一个Button,在Button的Click事件里写上Close();就可以了。

时间: 2024-11-08 19:01:23

VisualC#中MDI窗体初步的相关文章

在MDI窗体中,如何把最小化的子窗体放在主窗体的状态栏上

问题描述 在MDI窗体中,如何把最小化的子窗体放在主窗体的状态栏上 解决方案 解决方案二:下面的代码只是实现你上面说的要求.如果要求点击状态栏上的按钮,再把窗体show出来,还需要在下面代码的基础上再扩展.主要的思路就是,在父窗体能处理子窗体的最小化事件.//先建一个FormBase的基类,子窗体都从这个基类继承publicclassFormBase:System.Windows.Forms.Form{publicdelegatevoidFormMinSize(objectsender,Even

C#.net 的mdi窗体(父子窗体)中如何让子窗体去关闭另一个子窗体啊!

问题描述 rt 解决方案 解决方案二:使用回調函數*****************************************************************************欢迎使用CSDN论坛专用阅读器:CSDNReader(附全部源代码)http://feiyun0112.cnblogs.com/解决方案三:通过条件去判断找出那个mdi窗体,然后关闭.解决方案四:引用2楼wesleyluo的回复: 通过条件去判断找出那个mdi窗体,然后关闭. 同意解决方案五:怎

[VB.NET]浅谈MDI窗体的多窗体编程

编程 ---MDI窗体和多窗体编程--- 目的:在MDI窗体内用ToolBar实现多窗体的实例,在VB.NET中显示窗体一般代码如下 Private Sub ToolBar1_ButtonClick()Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick Sel

[VB.NET]浅谈MDI窗体的多窗体编程2

编程 ---关于WITH结构内的MDI窗体实例-- 在上一篇内,介绍了MDI窗体的实例 http://blog.csdn.net/allenle/archive/2005/02/18/293122.aspx 在第二段代码中写到 Private Shared fr As New frmName Private Sub ToolBar1_ButtonClick()Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As Sy

帮我看看这个比较怪的问题(MDI窗体关不了.)

问题描述 同时打开两个MDI子窗体,如果先关闭第一个子窗体再关闭第二个子窗体没有问题,如果先关闭第二个窗体,点关闭按扭,窗体不停的闪,关不了.停止响应.跟踪代码是关闭窗体时程序自动调用this.Dispose()方法出现这种现象.执行this.Dispose()时也不出错,也不退出.但只打开一个MDI子窗体时,关闭没任何问题.关闭按扭的代码就一句话.this.Close();希望高手帮我分析一下什么原因,我都晕了.产品就马上交工了,出现这样的问题急呀. 解决方案 解决方案二:感谢楼主的信任,这个

MDI窗体求助

问题描述 开发环境VS2005有两个项目项目1:中有个窗体A,然后有个类B,B类中有个PUBLIC方法ShowFormA(),可以将窗体A实例化,然后SHOW出来项目2:有个窗体B(MDI窗体),窗体B有个按钮,按钮事件实例化项目1的类B,然后调用类B的ShowFormA(),弹出一个窗体:我想在按钮事件中捕获弹出的窗体A,获取A的实例,然后将A设置为窗体B的子窗体这种想法是否可以实现? 解决方案 解决方案二:当然可以.在类B的那个ShowFormA方法里返回新建窗体A的引用,然后由窗体B保存该

mdi-delphi 中MDI程序设计

问题描述 delphi 中MDI程序设计 10C 本人在编写MDI程序建立子窗体时,出现如图所示的错误,求教大神! 具体内容:建立三个窗体mianformjchildform1childform2在mainform上放两个按钮,buttto1button2分别点击这两个按钮,能够在mainform中打开两个子窗体.部分代码如下: mainform中的代码: procedure OpenChildForm(FormClass: TFormClass; var Fm; AOwner:TCompone

gdi+-GDI+中一个窗体的CDC* pDC实例化两个Graphics对象问题

问题描述 GDI+中一个窗体的CDC* pDC实例化两个Graphics对象问题 代码如下:void CMyCtrl::Draw(CDC* pDC CRect rc){ Pen pen(Color(255 255 255 255)(float)1.5); SolidBrush solidbrush(Color(255 213 213 213)); pen.SetDashStyle((DashStyle)DashStyleSolid); Graphics Test(pDC->m_hDC); Tes

[收藏]使用Reporting Services中的窗体身份验证

services 使用 Reporting Services 中的窗体身份验证发布日期: 8/18/2004 | 更新日期: 8/18/2004Microsoft Corporation 适用范围:Microsoft SQL Server 2000 Reporting Services 摘要:了解有关 Reporting Services 安全扩展方面的知识,着重学习窗体身份验证.此外,下载和部署 Reporting Services 的窗体身份验证扩展示例. 要安装示例代码,请下载 Forms