使用VB.NET的五个技巧之窗体嵌套

如题所述

第1个回答  2022-10-24

   NET框架组件太大了 比任何以前所写的封装功能的库都要大 这样有好处 因为它大幅削减了建立应用程序所需编写的代码 但是也使我们不可能完全了解该框架组件 但是我们很容易从中找到一些技巧

  窗体嵌套

  经验丰富的Visual Basic开发者知道多文档界面(MDI)应用程序能够包含子窗体 那些子窗体由MDI父窗体管理 但是如果没有MDI的能力你怎样实现包含嵌套窗体?例如一个MDI子窗体也可能需要包含另一个窗体

  有时能够使用用户控件(UserControl)实现这种功能 但是如果你真的需要把一个窗体嵌套进另一个窗体 有多种方法可以实现 窗体衍生自Control类 这意味着它能被放入另一个窗体的控件集合中 使用如下的逻辑

   Dim f As New frmEmbed ()Me Controls Add(f)f Show()

  但是很不幸 这段代码将会导致一个运行时(runtime)异常(见图 )

  

  

  图 试图把一个窗体添加到另一个窗体的控件集合时出现的运行时错误

  为了避免这种异常 该窗体的TopLevel属性必须设置为False(见下面的代码)

  

  Dim f As New frmEmbed () f TopLevel = False Me Controls Add(f) f Show()

  图 显示的是使用上面的逻辑实现的一个窗体嵌入另一个窗体 嵌入的窗体有一个标题条(它的颜色是未激活的系统颜色) 因此该嵌入窗体能在容器窗体内四处拖动 在图 中 该窗体从它的开始位置(左上角)拖到了右下角

  

  

  图 在容器窗体中有一个嵌入的窗体 嵌入的窗体能在容器窗体中拖动

  通常在显示嵌入的窗体前先设置它的位置 这只需要简单的设置嵌入窗体的Left和Top属性 嵌入窗体的位置与容器窗体是相对的

  与MDI子窗体不同 嵌入窗体能覆盖容器窗体上的控件 图 显示了它们的不同

  

  图 嵌入窗体(左)可以覆盖容器窗体上的控件 MDI子窗体(右)不能覆盖MDI父窗体上的控件

  在右边的MDI例子中 没有办法使按钮隐藏在子窗体的后面 但是在左边该按钮被嵌入窗体覆盖了

  当窗体第一次被嵌入时 它将显示在容器窗体上的已存在的控件的后面 当它被点击时 它走向前台并停留在那儿 这会打扰用户 但是能通过插入下面的代码防止这种情况发生

  f BringToFront()

  嵌入的窗体可以包含其它的嵌入窗体 没有实际的限制 图 显示了一个本身包含嵌入的窗体的嵌入窗体

  

lishixinzhi/Article/program/net/201311/12398

使用VB.NET的五个技巧之窗体嵌套
图 嵌入窗体(左)可以覆盖容器窗体上的控件 MDI子窗体(右)不能覆盖MDI父窗体上的控件 在右边的MDI例子中 没有办法使按钮隐藏在子窗体的后面 但是在左边该按钮被嵌入窗体覆盖了 当窗体第一次被嵌入时 它将显示在容器窗体上的已存在的控件的后面 当它被点击时 它走向前台并停留在那儿 这会打扰用户...

vb怎么窗体嵌套
1,使用MDI窗体做为主窗体,然后创建MDI子窗体就可以嵌套在主窗体中 2,就使用普通的窗体,通过设置某一个form的parent也可以嵌套,但是这个方法一般都不用,不美观也不实用

vb怎么窗体嵌套
1,使用MDI窗体做为主窗体,然后创建MDI子窗体就可以嵌套在主窗体中 2,就使用普通的窗体,通过设置某一个form的parent也可以嵌套,但是这个方法一般都不用,不美观也不实用

vb.net中嵌套结构体传值复制的问题
可以在kb=k后单独复制数组 kb.rr=k.rr.Clone 这样两个数组就是独立的了 之所以先kb=k是为了当其含有多个成员时值型成员可以直接复制,只需Clone引用类型的就行了

VB的嵌套循环问题
这个很简单,外循环可以看成一个变量,内循环也可以看成一个变量,当外变量确定时 ,内变量将在外变量已经确定的情况下执行程序,就是“以静看动”。举个例子来说吧 Private Sub Command1_Click()Dim i As Integer, j As Integer For i = 1 To 4 '大循环,也叫外循环 Print i '显示...

如何嵌套master page
5.7 Master页面的嵌套 Master页面为创建模板化的Web应用程序提供了很大的帮助。前面已经创建了一个内容页面可以使用的Master页面。但大多数公司和组织都存在许多部门和小组,他们都希望使用Master页面的各种变体,也就是说,希望在一个Master页面中嵌套另一个Master页面。在ASP.NET中,这是可行的。例如,...

vb.net中的if else问题
是不存在的 需要一行内用到的话,必须还要跟个End If,也就是 If...Then...Else...End If 当然最好还是分行写,自己以后修改也容易看 If 条件1 Then ' 代码 ElseIf 条件2 Then ' 代码 ElseIf 条件2 Then ' 代码 Else ' 代码 End If 其中ElseIf行与Else行,在不需要时都可以不写。

VB.NET:键盘控制焦点移动
true 表示包括嵌套子控件(子控件的子级) false 表示不包括 wrap true 表示在到达最后一个控件之后从 Tab 键顺序中第一个控件开始继续搜索 false 表示不继续搜索 返回值 如果控件已激活 则为 true 否则为 false 备注 如果将控件的 ControlStyles Selectable 样式位设置为 true 该控件包含在另一个控件...

vb.net里如何设置多线程?
首先,你把你那些要运行很久的过程。尽量放在一个过程中。因为线程只能是过程,不能使函数,没有返回值的。然后,在某个事件下这样写:这里我假设你的那个很就的过程叫做 sub aaa()调用如下:Dim mythread As New System.Threading.Thread(AddressOf aaa)mythread.Start()这样就是定义一个线程,名字...

VB怎样在数组之间匹配数据?
除此之外,预先构造一个对应表也是很有效率的方法。磨刀不误砍柴工。如果有环境的支持,那效率和代码都要省很多。最典型的就是LinQ。如果你使用的是VB.net,并且框架是3.0版本以上,就可以得到LinQ的支持了。或者,如果你的数据是从数据库中获取的,那么使用SQL语句重新从数据库获取过滤过的数据比自己...

相似回答
大家正在搜