日期:2014-05-18  浏览次数:20908 次

.net 窗体移动事件
在MFC里面窗体的移动有两种事件 
OnMove OnMoving,前者移动完成后触发,后者正在移动的时候触发
在.net 非MFC里面 我怎么只发现 OnMove 事件?


如果没有,那么我怎么分别捕捉到窗体正在移动和窗体移动完毕的事件呢

谢谢



------解决方案--------------------
楼上说的观点我有点不大同意
首先
C#: OnPaint == MFC: OnMove//标准窗体移动完成后常规会触发OnPaint事件(重绘), 充其量可满足你的要求...
这个是不对的
窗体移动完成后不一定触发OnPaint事件,Paint事件是在窗体需要重绘时发生,当窗体被遮挡或显示内容改变时才发生
其次
MFC: OnMove == C#: OnMouseUp
这个也不是一个意思,form的移动和mouse事件不一定有关联,也有可能是代码控制的

对于楼主的这个问题
1、要实现捕获窗体正在移动的事件可用Move或LocationChanged
代码:
C# code
 private void Form1_Move(object sender, EventArgs e)
        {
           
           this.Text = "top:" + this.Top.ToString() + "left:" + this.Left.ToString();
          
        }

        private void Form1_LocationChanged(object sender, EventArgs e)
        {
            this.Text ="top:"+ this.Top.ToString() +"left:"+ this.Left.ToString();
        }