控件的拖拽,做一个英文单词卡片练习

在窗口中拖拽控件,以标签拖拽为例,可以动态给要拖拽的控件绑定MouseUP,MouseDown,MouseMove事件。

        private bool isMouseDown = false;
        private Point lableLocation;     //lable的location
        private Point mouseOffset;      //鼠标的按下位置
        //private int i = 0;

       

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != string.Empty)
            {
                Label lb = new Label();
                //i++;
                lb.Name = "lb" + getLbID();
                Random r = new Random();
                lb.Location = new Point(r.Next(100,this.Width-100), r.Next(100,this.Height-100));
                lb.Text = textBox1.Text.Trim();
                
                ComboBox cb = (ComboBox)this.Controls["cobColor"];
                lb.BackColor = getColorFromCombo(cb.SelectedIndex);
                lb.MouseDown+=new MouseEventHandler(lb_MouseDown);
                lb.MouseMove+=new MouseEventHandler(lb_MouseMove);
                lb.MouseUp+=new MouseEventHandler(lb_MouseUp);
                lb.MouseClick+=new MouseEventHandler(lb_MouseClick);
                lb.MouseDoubleClick+=new MouseEventHandler(lb_MouseDoubleClick);
                lb.Font = new System.Drawing.Font("微软雅黑", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                lb.AutoSize = true;
                this.Controls.Add(lb);
            }
        }

        private void lb_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                Label lb = (Label)sender;
                lb.Visible = false;
                lb.Dispose();
            }
        }

        

        private void lb_MouseDown(object sender,MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = true;
                lableLocation = ((Label)sender).Location;
                mouseOffset = Control.MousePosition;
            }
        }
        private void lb_MouseMove(object sender, MouseEventArgs e)
        {
            int _x = 0;
            int _y = 0;
            if (isMouseDown)
            {
                Point pt = Control.MousePosition;
                _x = mouseOffset.X - pt.X;
                _y = mouseOffset.Y - pt.Y;
                Label lb = (Label)sender;
                lb.Location = new Point(lableLocation.X - _x, lableLocation.Y - _y);
            }
        }
        private void lb_MouseUp(object sender, MouseEventArgs e)
        {
            isMouseDown = false;
        }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值