VB.NET章鱼哥出品—如何解决MDI子窗体被父窗体中的控件覆盖的问题

最近有个网友问我这个问题,我就上网搜了下,结果很失望,有几个在CSDN上发的求助帖,看到最后都没有找到明确的答案。这里笔者在网上找到了API函数SetParent(),并对网上的错误进行了修改,并给出了简单实例代码。读者可自行测试:

Public Class Form1
    '作者:章鱼哥,QQ:3107073263 群:309816713
    '如有疑问或好的建议请联系我,大家一起进步
    '声明SetParent函数,这是一个API函数
    Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Long
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.IsMdiContainer = True '将Form1设置为父窗体容器
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Form1是父窗体,Form2是子窗体
        SetParent(Form2.Handle, Me.Handle)
        Form2.Show()
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SetParent(Form3.Handle, Me.Handle)
        Form3.Show()
    End Sub
End Class

截图效果:

时间: 2024-12-15 01:43:16

VB.NET章鱼哥出品—如何解决MDI子窗体被父窗体中的控件覆盖的问题的相关文章

VB.NET章鱼哥出品—怎样解决MDI子窗口被父窗口中的控件覆盖的问题

近期有个网友问我这个问题,我就上网搜了下,结果非常失望.有几个在CSDN上发的求助帖.看到最后都没有找到明白的答案. 这里笔者在网上找到了API函数SetParent(),并对网上的错误进行了改动,并给出了简单实例代码. 读者可自行測试: Public Class Form1 '作者:章鱼哥,QQ:3107073263 群:309816713 '如有疑问或好的建议请联系我.大家一起进步 '声明SetParent函数.这是一个API函数 Declare Function SetParent Lib

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

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

VB.NET 章鱼哥出品--入门基础Button控件的使用详解(一)

全网最全的Button控件详解!!!Button 按钮是VB.NET 中最基础,也是最常用的控件,不管你是初学者还是大牛.每个程序中必然少不了Button按钮.但是Button控件有很多用法很多大牛却不见得知道.用的最多的无非就是在点击事件中处理程序,今天我将使用2到3篇文章的篇幅来详细讲解Button按钮的用法.      '作者:章鱼哥,QQ:3107073263 群:309816713            '如有疑问或好的建议请联系我,大家一起进步     1,属性(以最常用的开始) (

【C#】MDI窗体中,将子窗体置于父窗体控件之上的方法

问题 解决办法 user32dll SystemRuntimeInteropServices 代码 总结 问题 这几天在优化程序的时候发现了一个问题,就是在MDI窗体中的子窗体被激活显示出来之后,总是被主窗体中的控件遮挡(各种控件).解决的方法也试了很多但是都不是很满意,由于C#的WINFROM窗体没有SETPARENT的方法,所以很多东西都需要自己去编写,下面就贴一个至少让我感觉非常不错的方法吧. 解决办法 user32.dll user32.dll是Windows用户界面相关应用程序接口,用

C# MDI 子窗体被父窗体控件挡住

最近在做一个小工具,发现了一个过去做项目没有遇到的问题:子窗体被父窗体的控件给挡住了! 如下图所示: 子窗体的TopMost 已经设为true,父窗体的控件已经置于底层,但是结果还是很悲观!无奈之下,谷歌了一下,尝试了很多种方法,结果找到了一种最简单的解决问题方案,代码如下: using System.Runtime.InteropServices; // 导入名称空间 [DllImport("user32")] public static extern int SetParent(i

Android自定义控件系列 十:利用添加自定义布局来搞定触摸事件的分发,解决组合界面中特定控件响应特定方向的事件

这个例子是比较有用的,基本上可以说,写完这一次,以后很多情况下,直接拿过来addView一下,然后再addInterceptorView一下,就可以轻轻松松的达到组合界面中特定控件来响应特定方向的触摸事件了. 请尊重原创劳动成果,转载请注明出处:http://blog.csdn.net/cyp331203/article/details/45198549,非允许请勿用于商业或盈利用途,违者必究. 在写Android应用的过程之中,经常会遇到这样的情况:界面包含了多个控件,我们希望触摸在界面上的不

重构—子窗体和父窗体

用单例模式实现子窗体在父窗体中显示,得到如下效果: 代码如下: 在子窗体中写入单例模式 '当程序没有焦点的时候,最小化 Private Sub frmStatusUI_Deactivate(senderAs Object, e As EventArgs) Handles Me.Deactivate If Me.WindowState <>FormWindowState.Minimized Then Me.WindowState =FormWindowState.Minimized 'Me.ZO

基于VB中WINSOCK控件的网上象棋系统的实现

本文发表在<微型机与应用>杂志2001年第3期. 马根峰1   ,  孙艳2  , 王平1 (1.重庆邮电学院自动化学院,重庆,400065:2. 铁道部第十九工程局四处,内蒙 通辽,028000 )  摘要     本文首先介绍了Visual Basic中的WINSOCK控件的使用方法,然后深入探讨了网上象棋系统的设计思想及其实现过程. 关键词    WINSOCK控件:TCP:UDP 中图分类号: 文献标识码: 1      引言 MicrosoftVisual Basic 是可视化的.面

关于Mdi窗口-父窗口上的控件把子窗口的挡住的问题

using System.Runtime.InteropServices; [DllImport("user32")] public static extern int SetParent(int hWndChild, int hWndNewParent); ///temp2是你的子form temp2.MdiParent = this; temp2.Show(); SetParent((int)temp2.Handle, (int)this.Handle); 原文:http://to