vb.net 中MDI子窗体对其父窗体属性的获取与修改

兄弟前些日子做项目,第一次使用vb.net,碰上不少问题,相信很多初学者多多少少都会遇到这些问题,为了初学者学习方便,小弟总结了一些小经验,供大家参考讨论。
第一篇:如何在MDI子窗体中控制父窗体的属性等等
功能:比如打开一个子窗体后,就要设置父窗体中的某个菜单项或者按钮为不可见状态,诸如此类。
内容:
MDI父窗体和MDI子窗体类定义如下:
MDI父窗体:
Class MDIForm
Inherits System.Windows.Forms.Form
.........
'member mnuMain
Friend WithEvents mnuEditPaste As System.Windows.Forms.MenuItem
.......
'member
Friend WithEvents toolScan As System.Windows.Forms.ToolBarButton
private sub showChild()
dim frmTmp as new MDIChildFom'define a new instantce of MDIChildForm
frmTmp.MdiParent = me 'set the new form to be a Mdichild
frmTmp.show() 'show the new form
end sub
end Class
MDI子窗体:
Class MDIChildForm
.......
'set mnuEditPaste & toolScan cannot be seen
private sub setMDIMnuToolUnvisible()
'***************************************'
' first method you can set a menuitem to be unvisible'
'***************************************'
'this method you could not control one MenuItem
'you can only set a group of menuitems
me.MdiParent.Menu.Menuitems(0).visible = False 'set the first group menuitem can not be seen
'with this method you have not right to modify toolScan

dim frmMdi as MDIForm
if tyhpeof me.MdiParent is MDIForm
frmMdi = DirectCast(me.Mdiparent, MDIForm)'get the instantce of me.MdiParent
'then you should access all the members of class MDIForm without private members
frmMdi.mnuEditPaste = False
frmMdi.toolScan = Flase
'like this you could do everything with MDIForm you want
end if

end sub
end Class

时间: 2024-12-02 12:48:13

vb.net 中MDI子窗体对其父窗体属性的获取与修改的相关文章

vb.net向父窗体传值-在vb.net中,子窗体如何向父窗体传值

问题描述 在vb.net中,子窗体如何向父窗体传值 多个窗体的变量对应的是多个SQL的视图(每个窗体变量数不同),当主窗体打开后OPC连接,打开子窗体(只能打开一个窗体),子窗体中_Load下读取的SQL视图变量名并读入一数组a(n)(全局变量)中,子窗体打开后,主窗体将a(n)读入b(n),并依据这些变量名寻找对应WINCC中的值.可是我的主窗体中应把判定子窗体是否打开的脚本写在什么事件下好呢,同时,我的OPC连接是不是也不能写在Form_Load下了,求高手指点. 解决方案 [VB.NET]

vb.net 防止MDI子窗体被多次实例化的四种方法

方法一            可能没有什么实用性,只适合简单项目:       Dim frmTmp As ClassForm        "实现已经设计好了一个称作(类名为)ClassForm的表单              frmTmp = New ClassForm          "在此定义它的一个实例         frmTmp.ShowDialog()                "作为模式窗体显示这样在当前窗体没有关闭以前,其他form上的菜单按钮都不可

设置C#子窗体在主窗体中居中显示

问题的开始是由C#传传看主群里的印醒提出来的,下面我来说一下解决方案吧 其实表面上看是很简单的 开始吧,现在有两个窗体Form1主窗体,Form2子窗体 而且我相信大部分人都会这样写 在子窗体的Load事件中 这样写 this.StartPosition = FormStartPosition.CenterParent; 其实这样写是不对的,正确的写法应该是 this.StartPosition = FormStartPosition.CenterScreen; 为什么是CenterScreen

C#设置子窗体在主窗体中居中显示解决方案_C#教程

问题的开始是由C#传传看主群里的印醒提出来的,下面我来说一下解决方案吧 其实表面上看是很简单的 开始吧,现在有两个窗体Form1主窗体,Form2子窗体 而且我相信大部分人都会这样写 在子窗体的Load事件中 这样写 复制代码 代码如下: this.StartPosition = FormStartPosition.CenterParent; 其实这样写是不对的,正确的写法应该是 复制代码 代码如下: this.StartPosition = FormStartPosition.CenterSc

Delphi中在DLL动态链接库中封装VCL的MDI子窗体

不多说了,看代码就应该明白了,曾经我遇到的问题,现在放出来大家共享! 这里是工程文件的部分: 在DLL中封装MDI子窗体需要重写DLL入口函数,具体代码如下: 1var 2 DllApp: TApplication;//定义保存原DLL的TApplication对象 3 DllScr: TScreen;//定义保存原DLL的TScreen对象 4 5procedure UnProcDll(Reason: Integer); register; 6//重新定义DLL入口函数 7begin 8 if

MDI窗体程序中防止子窗体被多次实例化——Singleton的C#实现

程序 晚上逛CSDN论坛的时候,看到C#区有位朋友问"防止MDI子窗体被多次实例化",我随即写了这篇文章. 其实这个问题,就是经典的23种设计模式中的单件模式(Singleton),下面用C#实现之: 首先我们有2个Windows Form,主窗体叫Form1,子窗体叫ChildForm.在主窗体中加入一Menu,用来实例化子窗体,我们在Form1.cs中写入下代码: private static ChildForm childForm; //静态变量,保存唯一实例 private v

如何在MDI子窗体中使用TransparencyKey属性

问题描述 如何在MDI子窗体中使用TransparencyKey属性如果窗体不是MDI子窗体,则可以通过设置TransparencyKey属性使得窗体透明.但如果窗体时MDI子窗体,这个属性就无效了.请教有什么办法使得MDI子窗体透明或其TransparencyKey属性生效. 解决方案 解决方案二: 解决方案三:感觉是来踢馆的解决方案四:是不可以的,让MDI子窗体再穿透MDI主窗体实在有点为难windows了不知为何一定要MDI呢?解决方案五:引用3楼xuzuning的回复: 是不可以的,让M

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

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

单例模式——解决MDI子窗体实例化的问题

                机房收费系统进行有一段时间了,但是始终有些历史遗留问题.比如,如何MDI子窗体如何显示在上层的问题和MDI子窗体实例化的问题.         对于如何显示在上层的问题,这次采用的还是SetParent函数,在模块里面添加: <span style="font-size:18px;"><span style="font-size:18px;"> '定义一个用来设置子窗体的函数 Declare Function