vb.net详解MDI窗体操作方法

MDI窗体可以避免打开窗体的时候被无数个子窗体困扰,我将为大家一一的介绍一下vb.net中MDI窗体的操作方法

一、如何创建MDI窗体?

1、创建mdi主窗体

新建建立一个默认空白的Windows应用程序,在Form1窗体的属性窗口中找到IsMDIContainer 属性,设置为 True


2、创建MDI子窗体

在vb.net中,mdi子窗体就是普通的窗体,无需更改其属性。所有直接新建一个Form2

3、添加代码

        Dim frm2 As New Form2Form2.Show()

此时你只需要简单的实例化一下显示出来就可以了,非常简单吧。


二、显示MDI窗口列表

用过带有子窗体的程序的朋友一定知道,很多程序都带显示它它本身打开的子窗体列表的功能,那么它是怎么实现的呢


现在在父窗体中修改你的MenuScript1控件的MdiWinddowListItem属性为你要设置的菜单即可。



三、排列子窗体

你只需要在你的单击操作中填入以下代码即可

 Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.ClickMe.LayoutMdi(MdiLayout.TileHorizontal) '水平平铺End SubPrivate Sub ToolStripMenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem3.ClickMe.LayoutMdi(MdiLayout.TileVertical) '垂直平铺End SubPrivate Sub ToolStripMenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem4.ClickMe.LayoutMdi(MdiLayout.Cascade) '层叠End Sub


看一下效果图





四、VB.NET 如何防止重复打开MDI子窗体?

Private Sub 窗体1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 窗体1ToolStripMenuItem.ClickDim frm2 As New Form2CheckForm(frm2, "Form2")frm2.WindowState = FormWindowState.NormalShowForm(Form2)End Sub'*****************************************************************************'*过程名称:CheckForm'*参数说明:MDIChildForm——需检测的窗体;MDIChildFormName ——检测窗体的名字'*功能说明:首先检测是否有MDI子窗体,如果没有,则创该MDI子窗体的窗体实例'*                    如果有,则检测当中有没有其窗体实例,有则激活;没有则创建其窗体实例'*****************************************************************************Private Sub CheckForm(ByVal MDIChildForm As Form, ByVal MDIChildFormName As String)If Me.MdiChildren.Length < 1 Then'如果没有任何一个MDI子窗体,则创该MDI子窗体的窗体实例ShowForm(MDIChildForm)Exit SubElseDim x As IntegerDim frmyn As BooleanFor x = 0 To (Me.MdiChildren.Length) - 1Dim tempChild As Form = CType(Me.MdiChildren(x), Form)If tempChild.Name = MDIChildFormName Thenfrmyn = True'检测到有该MDI子窗体,设为TRUE 并退出循环Exit ForElsefrmyn = FalseEnd IfNextIf frmyn = False Then'在打开的窗体中没检测到则新建ShowForm(MDIChildForm)Else'在打开的窗体中检测到则激活Dim MDIChildFrm As Form = CType(Me.MdiChildren(x), Form)MDIChildFrm.Activate()  '使子窗体激活MDIChildFrm.WindowState = FormWindowState.NormalEnd IfEnd IfEnd Sub'**************************************************'*过程名称:ShowForm'*参数说明:MDIChildForm ——需创建实例的窗体'*功能说明:创建窗体实例'**************************************************Private Sub ShowForm(ByVal MDIChildForm As Form)Dim MDIChildFrm As Form = MDIChildFormMDIChildFrm.MdiParent = Me ' 定义MDI子窗体MDIChildFrm.Show() '打开窗体End SubPrivate Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClickedEnd SubPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadDim frm2 As New Form2CheckForm(frm2, "Form2")frm2.WindowState = FormWindowState.MaximizedEnd Sub
End Class



好了,关于MDI子窗体的先介绍到这,有什么不足或者不正确的地方,提出来一起交流。


转载于:https://www.cnblogs.com/jinfulin/p/3797710.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lokijs可以用mysql_JavaScript实现的内存数据库LokiJS介绍和入门实例_javascript技巧

LokiJS是一个内存数据库&#xff0c;将性能考虑放在第一位。LokiJS支持索引和更快的文档访问&#xff0c;执行性能非常好(近50万OPS/秒)。其内置DynamicView类可以用于数据子集的索引&#xff0c;甚至获取更快的性能。*阅读这篇文章来看一看LokiJS的性能表现。LokiJS支持collec…

除了修改WEBCONFIG会导致WEB服务重启外,还有其他的什么操作会导致重启?

1、修改WEBCONFIG文件 2、BIN文件夹下&#xff0c;添加、删除、覆盖文件 3、IIS应用程序池回收 参考文章:http://blog.csdn.net/hb_gx/archive/2007/05/21/1619941.aspx转载于:https://www.cnblogs.com/niaowo/p/3686097.html

院队选拔赛

结束了&#xff0c;大半年的干活结束了&#xff0c;后面就是自己算法的大干活了。恩恩&#xff0c;目测就是下一站省赛了&#xff0c;早点睡觉。晚安~ 留个地址后面ak掉。hust stodgersma 转载于:https://www.cnblogs.com/stodgers/p/3898317.html

pandaboard 安装_linux fb设备(pandaboard) | 学步园

fb设备主要作用是获取帧buffer&#xff0c; 并设置&#xff0c;用于显示。fbmem是主要的框架层和抽象层。 每个具体的平台的帧设备是在调用platform_driver_register注册之后&#xff0c;由其probe函数调用create framebuffer将fbinfo设置给registered_fb(数组&#xff0c; 不同…

WinForm窗体之间传值

当程序需要将一个窗体中的一些信息传给另一个窗体并让其使用时,就需要用到这个知识点 方法一:通过接受参数的窗体的构造函数传值 例:现有Form1和Form2两个窗体,二者都包含一个文本框,Form1还包含一个按钮.程序从Form1开始运行,当点击Form1上的按钮时,Form2弹出,并将Form1中文本…

多线程写mysql数据库_多线程读写mysql数据库

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼unsigned int __stdcall scan(PVOID pM){char ip[20];strcpy(ip, (char*)pM);MYSQL mysql;MYSQL_RES* result;//初始化mysql句柄mysql_init(&mysql);//连接mysql数据库if(!mysql_real_connect(&mysql,"localhost"…

C++学习之路,漫长而遥远

一、C/C语言 如果你的基础很差&#xff0c; 建议不要一开始就学C语言&#xff0c;从C开始学起&#xff0c;对程序有个初步的认识&#xff0c;循序渐进。C语言的书嘛&#xff0c;先买一本 300 页以内的&#xff0c;把书中的每一个例子都通过键盘敲打进去到 Visual studio里面去&…

python图标icon_用Python提取exe图标icon

这里使用Python win32包中的win32gui.ExtractIconEx方法来提取exe的图标&#xff0c;除了安装Python&#xff0c;还需要到这里下载Pywin。第一份代码将指定的a.exe图标保存为bmp格式&#xff1a;import win32uiimport win32guilarge, small win32gui.ExtractIconEx(r"c:/…

python读取word图片_Python中如何读取Word中的图片

Python能够快速的编写、调试&#xff0c;用来提取各类软件中的图片再好不过了。今天小编就为大家带来在Python中提取Word图片的方法。方法需要批量的修改文件后缀名&#xff0c;并且解压之后将图片拷贝到需要存放的地方&#xff0c;然后将该文件夹清空留作下次的路径&#xff0…

layoutSubviews 详解

ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit——————- - (void)layoutSubviews - (void)layoutIfNeeded - (void)setNeedsLayout——————– - (void)setNeedsDisplay - (void)drawRectlayoutSubviews在以下情况下会被调用&#xff…

jdk中的设计模式_JDK中的设计模式

jdk中的设计模式Zen的JCG合作伙伴Brian Du Preez 是IT领域的合作伙伴&#xff0c; 在收集JDK中最常见的设计模式方面做得非常出色。 模式列表的确令人印象深刻且很长&#xff0c;因此让我们不再ba不休&#xff0c;然后将其呈现给您。 前几天&#xff0c;我在Enterprise Dev上看…

python鼠标选中事件_python对绑定事件的鼠标、按键的判断实例

当多个事件绑定了同一个命令&#xff0c;那么在命令内部根据不同的事件进行处理的时候&#xff0c;怎么确定哪个事件发生了呢&#xff0c;用下面的来检测&#xff0c;经过测试处理tab键和alt键不能识别&#xff0c;其他单个都能被识别。还有个事件的type属性&#xff0c;这个经…

PAT 1074. Reversing Linked List (25)

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K 3, then you must output 3→2→1→6→5→4; if K 4, you must output 4→3→2→1→5→6. Input Sp…

jOOQ,H2和Maven入门

本文是我们学院课程的一部分&#xff0c;标题为jOOQ –类型安全的数据库查询 。 在SQL和特定关系数据库很重要的Java应用程序中&#xff0c;jOOQ是一个不错的选择。 当JPA / Hibernate抽象过多&#xff0c;JDBC过多时&#xff0c;这是一种替代方法。 它显示了一种现代的领域特…

sqlserver迁移数据到mysql_SQLServer数据库之将ABP的数据库从SQLSERVER迁移到MySql

本文主要向大家介绍了SQLServer数据库之将ABP的数据库从SQLSERVER迁移到MySql&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习SQLServer数据库有所帮助。安装MySql.Data.Entity然后你需要安装 MySql.Data.Entity和 MySql.Data 到你的 .EntityFramework 和 .We…

查询SQL中某表里有多少列包含某字段

select c.namefrom SYSCOLUMNS as c left join SYSOBJECTS as t on c.idt.id where c.name like 这里是某个字段% and t.name这里是表名 转载于:https://www.cnblogs.com/qiywtc/p/3719087.html

php与mysql连接程序_PHP与Mysql连接

首先请确保LAMP环境完全配置成功&#xff0c;否则请猛击我&#xff01;然后通过mysql的密码登陆到phpMyAdmin&#xff0c;在浏览器中输入http://127.0.0.1/phpMyAdmin登陆后就像是这样&#xff1a;首先我们来创建一个用于测试的数据库。偷懒的话直接在phpMyAdmin中创建就可以了…

java自动gc_具有Java 7中自动资源管理功能的GC

java自动gc这篇文章简要概述了Java 7中引入的称为自动资源管理或ARM的新功能。 文章探讨了ARM如何减少开发人员为有效释放分配的资源的JVM堆而必须编写的代码。 Java编程语言中编程的最甜蜜之处之一是对象取消分配的自动处理。 在Java世界中&#xff0c;这通常被称为垃圾收集。…

ASP.NET 程序优化

一、SqlDataRead和Dataset的选择 Sqldataread优点&#xff1a;读取数据非常快。如果对返回的数据不需做大量处理的情况下&#xff0c;建议使用SqlDataReader&#xff0c;其性能要比datset好很多。缺点&#xff1a;直到数据读完才可close掉于数据库的连接 (SqlDataReader 读数据…

python pandas excel数据处理_Python处理Excel数据-pandas篇

Python处理Excel数据-pandas篇非常适用于大量数据的拼接、清洗、筛选及分析在计算机编程中&#xff0c;pandas是Python编程语言的用于数据操纵和分析的软件库。特别是&#xff0c;它提供操纵数值表格和时间序列的数据结构和运算操作。它的名字衍生自术语“面板数据”(panel dat…