在用VB.net对机房收费系统进行重构时遇到了些小问题,下面对一些问题进行总结。
一、MDI子窗体显示到Panel、PictureBox等控件前
正常情况下Mdi子窗体只能显示到父窗体的容器中,但是在设计时父窗体往往不能加入基本的交互控件,为了能够加入按钮、文本框等的基本控件我们常常在父窗体的容器内加入能作为容器的控件如Panel、PictureBox等的容器控件,于是在父窗体内方基本控件的难题解决了。
摆放控件的问题解决了但是又出现了新问题,父窗体中的控件和窗体的显示顺序颠倒了,显示的子窗体被Panel等的容器控件挡住了,导致子窗体不能显示问题。经过跋山涉水,终于找到了几个解决办法。
1、使用Controls属性将子窗体作为控件子集合显示到Panel等前
有些控件可以作为容器使用如类似Panel、PictureBox等的控件,在向容器控件中加入其它控件时,这些子控件组合到一起成为一个控件集合,在这个控件集合中每个控件都有各自显示的顺序。下面我们那Panel来举例(其它容器控件的方法相同)。
为了显示到Panel前我们可以使用Controls属性,将子窗体作为Panel的子控件显示。具体实现代码如下:
'我们在frmQryBalance显示事件中添加该属性。
Private Sub frmQryBalance_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.TopLevel = False
frmMain.Panel1.Controls.Add(Me)
frmMain.Panel1.Controls.SetChildIndex(Me, 0)
frmMain.Show()
End Sub
上面的Add方法将frmQryBalance窗体作为子控件显示到了Panel中,SetChildIndex方法是设置子窗体的显示顺序,0是将该窗体显示到所有子控件最前方。
2、使用Parent属性将子窗体作为子控件显示到Panel等前
代码如下:
Private Sub frmQryBalance_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.MdiParent = frmMain
Me.Parent = frmMain.Panel1
Me.BringToFront()
Me.Show()
End Sub
BringToFront是将控件移到 Z 顺序的前面。 如果控件是另一个控件的子级,那么将子控件移到 Z 顺序的前面。 BringToFront 不会使一个控件成为顶级控件。
BringToFront方法相反的一个方法名为SendToBack方法。将控件移到 Z 顺序的后面。 如果控件是另一个控件子级,那么将子控件移到 Z 顺序的后面。 如果控件为顶级控件,除非该控件为活动状态,否则此方法将无法正确运行。 顶级控件是类似 Form 的控件,它不是另一个控件的子控件。 活动控件是具有输入焦点的可见控件。 若要对非活动的顶级控件使用 SendToBack 方法,首先要对该控件调用 BringToFront 方法。
3、调用API方法SetParent
在Visual Basic .Net中使用“平台调用”服务,申明Windows API函数主要有二种具体的实现方法: ①使用DllImport特征类来申明Windows API函数。 ②使用“Declare”语句来申明Windows API函数。 这二种方法虽有异曲同工之效,但在繁简上却有很大差异,第一种方法申明过程比较复杂,很容易在申明Windows API函数时出错,所以并不提倡。而第二种方法相对简单,并且又保存了以前Visual
Basic中的很多语法,所以在平常时大都使用这种方法来申明Windows API函数。
具体实现方法如下:
Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Sub frmQryBalance_Load(sender As Object, e As EventArgs) Handles MyBase.Load
setparent me frmMain.Panel1
End Sub
实现方法还有很多,这儿就总结了三种,这三种其实都是有相似之处,都是把窗体作为子项目显示到Panel控件中,但对于在Panel中的排列顺序还需要我们进一步进行探究。
分享到:
相关推荐
在VB.NET中,创建自定义控件并设置其背景色为透明是一项常见的需求,这可以使界面设计更加灵活,用户能够看到控件背后的元素。本文将深入探讨如何实现这个功能。 首先,我们需要理解VB.NET中的控件绘图机制。在...
vb.net 自定义控件 自定义属性 UITypeEditor UI 类型编辑器 实例 提供一个示例 UITypeEditor,它使用 IWindowsFormsEditorService 显示用于用户输入的 Form。 IWindowsFormsEditorService 只能通过 PropertyGrid ...
VB .net SerialPort控件使用详解 VB .net SerialPort控件是一种常用的串口通信控件,广泛应用于各种串口通信项目中。在VB2008中使用SerialPort控件可以实现串口的接收和发送操作。但是,在使用过程中需要注意一些...
在VB.NET编程中,将窗口显示在Panel控件中是一种常见的做法,这允许开发者实现多窗口切换的效果,尤其是在创建复杂的用户界面时。Panel控件在Windows Forms应用中扮演着容器的角色,可以用来组织和管理其他控件。在...
在VB.NET和C#等.NET语言中,使用DataGridView控件可以方便地构建用户界面,处理各种类型的数据。下面将详细介绍关于VB.NET中的DataGridView控件及其用法。 1. **添加DataGridView控件** 要在VB.NET项目中使用...
通过学习和实践这些VB.NET控件的使用实例,你将能够熟练地构建功能丰富的Windows Forms应用。不断地尝试、调试和优化,你的编程技能将会日益精进。记得在实际开发中结合具体需求,灵活运用所学知识,创造出满足用户...
在VB.NET编程环境中,窗体控件是构建用户界面(UI)的核心元素,它们使得开发者能够创建具有丰富交互性的应用程序。这些控件包括按钮、文本框、标签、计时器等,提供了各种功能,比如输入数据、显示信息、执行操作等...
这是一个关于如何跨窗体操作控件或过程的一个例子。比如,你想用窗体A的按键来执行窗体B的文本框变色。 Imports System Imports System.Threading Imports System.Text Public Class Form1 Private Sub Form1_...
在VB.NET编程环境中,开发人员有时需要实现一些高级的界面效果来提升用户体验,例如半透明窗体和非矩形窗体。本项目基于@浓情咖啡的原作进行了扩展,添加了一个半透明PNG图片逐渐消失的功能,同时也创建了一个非矩形...
VB.NET支持三种类型的窗体:Windows窗体、ASP.NET Web窗体和控制台应用程序。 1. **Windows窗体** 是创建本地Windows应用程序的界面,用户可以通过Visual Studio来创建。在新建项目中选择“Windows应用程序”,设置...
这意味着该实例可能有一个皮肤管理器组件,负责加载和显示皮肤列表,并在用户选择后应用所选皮肤。这通常涉及到读取皮肤文件、解析皮肤配置以及动态更新窗体控件的外观等操作。 要实现这样的功能,开发者首先需要在...
而TextBox控件则用于输入和显示文本,可以通过Text属性获取或设置文本内容。DateTimePicker控件则方便用户选择日期和时间,其Value属性可以获取或设置选定的日期和时间。 “VB.Net 应用教程 .chm”文件可能涵盖更...
在VB.NET编程中,"让控件沿窗体边缘四周跑马移动"是一种常见的动态效果,通常用于创建吸引用户注意力的界面元素。这种效果可以使一个或多个控件(如按钮、标签等)在窗体的边界上按照某种规律移动,就像马在赛马场上...
vb.net控件随窗口大小调整
在VB.NET中,你可以通过Visual Studio的拖放功能轻松地将控件放置到窗体上,并使用代码编辑器编写事件处理代码。 压缩包中的“文字字符处理”可能包含了关于字符串操作的示例,如字符串拼接、查找替换、分割合并等...
这个压缩包提供的源码应该包含了一系列VB.NET 2008控件的实例,帮助学习者深入理解这些控件的工作原理和用法。 1. **Label控件**:Label是最基本的控件,用于显示不可编辑的文本信息。它可以用来标识其他控件,如...
在VB.NET编程环境中,开发人员经常使用DataGridView控件来展示数据,它是一个强大的表格控件,可以方便地显示和编辑数据库或数组中的数据。然而,原生的DataGridView控件并没有内置的分页功能,这对于处理大量数据时...
在VB.NET编程环境中,开发人员经常使用DateTimePicker控件来处理日期和时间的选择。然而,标准的DateTimePicker控件在某些情况下可能无法满足特定的设计或功能需求,例如,当需要用户仅选择日期而不涉及时间,或者...
在VB.NET编程环境中,我们经常需要处理日期和时间信息,并以特定格式显示给用户。"时间显示包含日期,星期(VB.NET)"这个标题所指的就是如何在VB.NET中创建一个功能,显示当前日期并附带对应的星期信息。VS2010是...
在VB.NET中,UserControl就像一个迷你版的窗体,可以包含多个子控件、事件处理程序和自定义属性。 创建UserControl的过程大致分为以下步骤: 1. **新建UserControl**: 在Visual Studio中,选择“项目”>“添加新项...