浮动控件

    春节期间作了一个浮动的控件,照着windows MDI创体做的,感觉还挺有意识的,放上来记录一下,呵呵。

标尺 和 网格 有的代码是来原于网络,具体作者是谁不记得了,谢过了。也拜个年了。

codeproject上有篇文章不错的,是画标尺的 
http://www.codeproject.com/cs/miscctrl/ruler.asp

先来个画面截图把

浮动panel运行截图

上图中SubFrom1和SubFrom2就是两个浮动控件,他们可以改变大小,前端表示,最大化,复原等一些动作。
当然了还可以在里面添加其他的控件, 其中SubForm1中加就添加了一个标尺的控件,
添加方法如下

浮动控件 浮动控件中添加其他控件

下面把几个主要的功能的实现说一下,
1· 鼠标按下这个控件前端显示,
   先是捕获整个控件的上的左键按下事件,然后使用了Controls.SetChildIndex() 方法来控制Z轴的次序。
代码如下

 1 浮动控件 protected   override   void  WndProc( ref    Message m)
 2 浮动控件 {
 3浮动控件    // 右键按下
 4浮动控件    // LBUTTONDOWN
 5浮动控件    if (m.Msg == 0x210)
 6浮动控件    {
 7浮动控件        if (!(isMaxSize || this.Equals(Parent.TopLevelControl)))
 8浮动控件        {
 9浮动控件            this.Parent.Controls.SetChildIndex(this0);
10浮动控件        }

11浮动控件    }

12浮动控件    base.WndProc(ref   m);
13浮动控件}

上面代码中的 0x210 查了老半天也没有查到,后来在代码中加Debug才得到的,太苯了 呵呵!

2·控件的移动
    开始没有控制移动的范围,结果移到窗口外边了,在也找不到了。

浮动控件 控件移动

3·最大化与复原
在最大化的时候除了要记住开始的大小外,还要记住位置。

浮动控件 最大化与复原

4·控件容器。
  在控件中方一个panel用于来放置其他控件 然后覆盖父类的Controls方法,返回panel的Controls,
这时需要注意一下,应该在执行完InitializeComponent()之后才能让它返回panel的Controls。
否则还是返回基类的Controls。

浮动控件 public new ControlCollection Controls

整个工程的代码 浮动控件

今天就到这儿了。

你可能感兴趣的:(浮动)