接上一章节,本篇主要介绍一种支持鼠标随意拖动Panel内部控件位置的方法.为了简单起见,这里我们不妨就暂称我们将要扩展的Panel容器名称为 MoveControlPanel,该容器至少需要实现以下功能
1. 识别当前鼠标位置,是否处于某个内部组件的边框位置,以让鼠标显示出对应的图标(拉伸,移动…)
2.移动鼠标以改变内部某个组件的大小及坐标,
3.保存容器内每个组件的当前坐标及大小.
为了便于描述当前光标状态,我们不妨定义一个枚举.姑且称其为 EMousePointPosition, 其至少应该具有如下定义.
/// <summary> /// 光标状态 /// </summary> private enum EMousePointPosition { /// <summary> /// 无 /// </summary> None = 0, /// <summary> /// 处于拉伸右边框位置 /// </summary> MouseSizeRight = 1, /// <summary> /// 处于拉伸左边框位置 /// </summary> MouseSizeLeft = 2, /// <summary> /// 处于拉伸下边框位置 /// </summary> MouseSizeBottom = 3, /// <summary> /// 处于拉伸上边框位置 /// </summary> MouseSizeTop = 4, /// <summary> /// 处于拉伸左上角位置 /// </summary> MouseSizeTopLeft = 5, /// <summary> /// 处于拉伸右上角位置 /// </summary> MouseSizeTopRight = 6, /// <summary> /// 处于拉伸左小角位置 /// </summary> MouseSizeBottomLeft = 7, /// <summary> /// 处于拉伸右下角位置 /// </summary> MouseSizeBottomRight = 8, /// <summary> /// 鼠标拖动状态 /// </summary> MouseDrag = 9 }
未完待续
分享一个自定义打印套打方案(二),扩展Panel,以支持鼠标随意拖动
时间: 2024-11-09 03:11:56