我是靠谱客的博主 懵懂胡萝卜,最近开发中收集的这篇文章主要介绍制作dockable 组件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

dockable组件就是可以任意挪到四边上的组件。

example on web: http://www.codeguru.com/Csharp/Csharp/cs_syntax/controls/article.php/c5849/

这个例子有三个小组件都是继承了user control的,实际上,可以有更多. 三个都很有代表性:

1. Container(border control): 就是一个容器,可以用来放东东的。作为容器,被揪到四边时,形状会变化。一会儿长,一会儿扁。这就要保证里面的东西也要跟着调整才行。所以,这个user control的OnResize() 方法需要重写。

2.Title Bar (Docking handle):就是给人家揪着用的。鼠标放上去,按住不动,一揪就走。Drag的event可以在OnMouseMove事件中,检查this.capture属性。如果this.capture=ture, 就说明已经抓住了,可以跟着走了。根据当前鼠标的位置,设定dock的值。从横着变成竖着,这个title bar也得改改形状,所以要重写OnPaint事件。 愚蠢的微软为什么把这个窗口键放在Ctrl旁边,我中英文输入切换需要按Ctrl,动不动就按错了。一按错,就跳出个挺大的开始菜单,讨厌!将来有钱,买下微软,把windows拆成零件一个一个的买,内核换成linux!

3.splitter(dockingResize): 这是中间的splitter, 可以拖拉调整.和上一个一样,这个也需要重写OnMouseMove, 和 OnPaint方法。为了知道拉伸多远,还需要从OnMouseDown中,得到开始点的位置参数。

整体而言,很简单。但是细节很多,例如,纵横都要有splitter, 窗口要能够最小化,要响应双击事件, 拖动时,要给人家一个虚拟的框好确定位置, 还有最大化,最小化的抽屉动画效果,鼠标的形状,圆形边缘等等。 原理很简单,要做细,做好很不容易的。

转载于:https://www.cnblogs.com/zlhxinxi83/archive/2008/02/14/1068426.html

最后

以上就是懵懂胡萝卜为你收集整理的制作dockable 组件的全部内容,希望文章能够帮你解决制作dockable 组件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部