父窗体嵌套子窗体,子窗体移动(非MDI,非顶级窗体)

本文介绍如何在非MDI且非顶级窗体的环境中,实现在父窗体中嵌套子窗体并能自由拖动的技术。通过在子窗体中添加MouseCaptureChanged和Move事件处理,结合Panel容器,实现子窗体在父窗体内的移动。同时,展示了在子窗体关闭时调用父窗体方法隐藏Panel的逻辑。
摘要由CSDN通过智能技术生成

这几天做的一个程序,搞的相当苦恼!

要再父窗体内嵌套子窗体,而父窗体又不是顶级窗体,又不能设置MDI多文档,还得要能拖动!

搞了好几天,问了很多人,没有什么好的解决方式。

 

这几天自己研究了下,发现了一个比较折中的方式。就是父窗体内容嵌套其他容器,将子窗体填充到该容器中。

(但是这个还是有缺陷的,因为容器背景色的问题)

 

废话不多说 我用的容器时Panel,窗体一共两个,父窗体CarApplyListing 子窗体CarApplyMain

 

 

1.首先申明子窗体所需要的变量

 

/// <summary>
/// 是否已经移动本窗体
/// </summary>
private bool isMove = false;

 

/// <summary>
/// 是否第一次移动
/// </summary>
private bool firstMove = true;

 

/// <summary>
/// 默认坐标(0,0)
/// </summary>
Point p = new Point(0, 0);

 

2.在子窗体中添加两个事件(只要是为了子窗体在父窗体大小空间内拖动,否则它只能在容器的范围内容拖动)

一个是MouseCaptureChanged 这个是当窗体的鼠标焦点切换时触发

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值