移动窗体中的控件

要移动窗体中的控件,要建立三个事件,鼠标按下事件,鼠标移动事件,鼠标放开事件
在建立三个事件前,还应找到控件的位置,这里介绍两个方法
方法一:
使用MouseHover和MouseLeave事件
当鼠标在要移动的控件上时,光标显示为VSplit,表示可移,当离开时光标为默认表示不可移
        private void pictureBox1_MouseHover(object sender, EventArgs e)
        {
            this.Cursor = Cursors.VSplit;
        }
        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            this.Cursor = Cursors.Default;
        }
方法二:
当鼠标位置在控件的区域内,光标显示为VSplit,表示可移,当离开这个区域光标为默认表示不可移
     /// <summary>
        /// 方法二
        /// 当到达鼠标要移动的控件区域时,更改鼠标形状
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            //label1.Text = this.Size.Width+" "+ e.X.ToString()+" "+this.Width.ToString()+" "+this.Right.ToString();
            if ((e.X >= pictureBox1.Location.X-1 && e.X <= pictureBox1.Location.X + pictureBox1.Width) && (e.Y >= pictureBox1.Location.Y-1 && e.Y <= pictureBox1.Location.Y + pictureBox1.Height))
            {
                this.Cursor = Cursors.VSplit;
            }
            else
            {
                this.Cursor = Cursors.Default;
            }
        }
当然也可使用句柄,使用API函数,当鼠标在控件上时,看能否得到控件句柄指针

鼠标按下事件
得到鼠标位置,如果鼠标在控件上,bIsMoving可移变量为真
鼠标移动事件
计算移动的位置,并把它限制在Form窗口内
鼠标放开事件
bIsMoving可移变量为假
代码如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值