窗体方法VB.NET设置控件和窗体的显示级别

最近笔者几篇文章介绍了改窗体方法的文章. 关联文章的地址

在用VB.net对机房收费系统行进构重时遇到了些小问题,上对面一些问题行进总结。

常正情况下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)
   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()
  End Sub

BringToFront是将控件移到 Z 次序的面前。 如果控件是另一个控件的子级,那么将子控件移到 Z 次序的面前。 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中的排列次序还需要我们进一步行进探索。

文章结束给大家分享下程序员的一些笑话语录: Bphone之你们聊,我先走了!移动说:我在phone前加o,我叫o缝;苹果说:我在phone前i,我是i缝;微软说:我在phone前加w,我叫w缝;三星说:你们聊,我先走了!

将来王建宙写回忆录的时候,一定要有一句“常小兵为中国移动的发展做出了不可磨灭的贡献”。