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 Form2
- Form2.Show()
此时你只需要简单的实例化一下显示出来就可以了,非常简单吧。
二、显示MDI窗口列表
用过带有子窗体的程序的朋友一定知道,很多程序都带显示它它本身打开的子窗体列表的功能,那么它是怎么实现的呢
现在在父窗体中修改你的MenuScript1控件的MdiWinddowListItem属性为你要设置的菜单即可。
三、排列子窗体
你只需要在你的单击操作中填入以下代码即可
- Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
- Me.LayoutMdi(MdiLayout.TileHorizontal) '水平平铺
- End Sub
- Private Sub ToolStripMenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem3.Click
- Me.LayoutMdi(MdiLayout.TileVertical) '垂直平铺
- End Sub
- Private Sub ToolStripMenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem4.Click
- Me.LayoutMdi(MdiLayout.Cascade) '层叠
- End Sub
看一下效果图
四、VB.NET 如何防止重复打开MDI子窗体?
- Private Sub 窗体1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 窗体1ToolStripMenuItem.Click
- Dim frm2 As New Form2
- CheckForm(frm2, "Form2")
- frm2.WindowState = FormWindowState.Normal
- ShowForm(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 Sub
- Else
- Dim x As Integer
- Dim frmyn As Boolean
- For x = 0 To (Me.MdiChildren.Length) - 1
- Dim tempChild As Form = CType(Me.MdiChildren(x), Form)
- If tempChild.Name = MDIChildFormName Then
- frmyn = True
- '检测到有该MDI子窗体,设为TRUE 并退出循环
- Exit For
- Else
- frmyn = False
- End If
- Next
- If frmyn = False Then
- '在打开的窗体中没检测到则新建
- ShowForm(MDIChildForm)
- Else
- '在打开的窗体中检测到则激活
- Dim MDIChildFrm As Form = CType(Me.MdiChildren(x), Form)
- MDIChildFrm.Activate() '使子窗体激活
- MDIChildFrm.WindowState = FormWindowState.Normal
- End If
- End If
- End Sub
- '**************************************************
- '*过程名称:ShowForm
- '*参数说明:MDIChildForm ——需创建实例的窗体
- '*功能说明:创建窗体实例
- '**************************************************
- Private Sub ShowForm(ByVal MDIChildForm As Form)
- Dim MDIChildFrm As Form = MDIChildForm
- MDIChildFrm.MdiParent = Me ' 定义MDI子窗体
- MDIChildFrm.Show() '打开窗体
- End Sub
- Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked
- End Sub
- Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Dim frm2 As New Form2
- CheckForm(frm2, "Form2")
- frm2.WindowState = FormWindowState.Maximized
- End Sub
- End Class
好了,关于MDI子窗体的先介绍到这,有什么不足或者不正确的地方,提出来一起交流。
vb.net详解MDI窗体操作方法的更多相关文章
- vb sendmessage 详解1
SendMessage函数的常用消息及其应用(有点长,希望能对大家有所帮助)函数原型: Declare Function SendMessage Lib "user32" Alia ...
- vb sendmessage 详解2
首先我们了解一下Windows的消息机制.Windows是一个消息驱动式系统,Windows消息提供应用程序与应用程序之间,应用程序与Windows系统之间进行通信的手段.举个例子,打开记事本程序,该 ...
- vb eof详解
源地址:https://zhidao.baidu.com/question/87122186.html?qbl=relate_question_1&word=eof%20sql&ski ...
- 【VB技巧】VB静态调用与动态调用dll详解
本文“[VB技巧]VB静态调用与动态调用dll详解”,来自:Nuclear'Atk 网络安全研究中心,本文地址:http://lcx.cc/?i=489,转载请注明作者及出处! [[请注意]]:在以下 ...
- 自写函数VB6 STUFF函数 和 VB.net 2010 STUFF函数 详解
'*************************************************************************'**模 块 名:自写函数VB6 STUFF函数 和 ...
- python 字符串操作方法详解
字符串序列用于表示和存储文本,python中字符串是不可变对象.字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单,双或三引号中间包含的内容称之为字符串.其中三引号可以由多行组成,编写 ...
- python 字典操作方法详解
字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 注意,浮点数比较很不精确, ...
- python 集合操作方法详解
说集合之前,我们先说一个小例子,假设某公司有五个人喜欢打篮球,五个人喜欢打游戏,问即打游戏有打篮球 的人都有哪些? play_basketball = ['a','b','c','d','e'] pl ...
- python 列表操作方法详解
列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表是一个数据的集合,集合内可以放任何数据类型,可对集合方便的增删改查操作.Python已经内置确定序列的长度以及确定最大和最 ...
随机推荐
- LeetCode 刷题记录(二)
写在前面:因为要准备面试,开始了在[LeetCode]上刷题的历程.LeetCode上一共有大约150道题目,本文记录我在<http://oj.leetcode.com>上AC的所有题目, ...
- lbs basic mongodb
MongoDB地理位置索引常用的有两种. db.places.ensureIndex({'coordinate':'2d'}) db.places.ensureIndex({'coordinate': ...
- C语言的struct/union字节对齐
C语言的一大优势就是对内存空间的控制,当然,一般情况下对于开发人员来说都是透明的.看一个始终困扰初学者的问题:字节对齐! 先看四个重要的基本概念:1.数据类型自身的对齐值:对于char型数据,其自身对 ...
- easyui中tree型控件不正常显示的处理方法
我在使用easyui中的tree控件时,出现不正常显示的现象,比如li中不能使用自定义的图标.父级展开或关闭时,其子级仍然显现并出现重叠等.找了很多资料,都没解决这个问题,后来逐个对照官方的源码,才找 ...
- 关于App.config配置文件
今天在做复习的时候,突然发现自己无法读取配置文件中的数据库连接字符串,而且检查了半天也没找出原因,最后求助万能的度娘才得以解决—— 1.App.config配置文件在项目中添加后不要修改名称,否则会出 ...
- CSS3- px、em、rem区别介绍
PX px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em ...
- jquery 更换皮肤
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Angular JS 使用的注意事项
标签中ng-app,什么情况需要指定名称,什么时候又不需要呢? 1.ng-app="" <div ng-app="" ng-controller='myC ...
- Android Studio 错误 Duplicate files copied in APK META-INF/LICENSE.txt
1 .Duplicate files copied in APK META-INF/LICENSE.txt android { packagingOptions { exclude 'META-I ...
- Android Launcher 怎样去掉主菜单,全部应用摆在桌面,相似小米桌面
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...