C#编程。 窗体上有一个按钮,通过鼠标在窗体上不同的地方拖动,按钮跟着鼠标拖动…… 请问在Mous

C#编程。窗体上有一个按钮,通过鼠标在窗体上不同的地方拖动,按钮跟着鼠标拖动……请问在MouseDown事件中要怎么写才能实现?我写Button1.Location=Lo... C#编程。 窗体上有一个按钮,通过鼠标在窗体上不同的地方拖动,按钮跟着鼠标拖动…… 请问在MouseDown事件中要怎么写才能实现? 我写Button1.Location=LocantionChance;结果编译失败。 求大神解救啊!!! 展开
 我来答
冬天之雪_
2014-01-29 · TA获得超过424个赞
知道小有建树答主
回答量:1304
采纳率:100%
帮助的人:596万
展开全部

你需要把鼠标的位置拿过来,代码是这样的。

在窗体中定义两个变量

Point mouseOff;//鼠标移动位置变量  
bool leftFlag;//标签是否为左键

窗体的三个鼠标事件

            this.MouseMove += new MouseEventHandler(MainWindow_MouseMove);

            this.MouseDown += new MouseEventHandler(MainWindow_MouseDown);

            this.MouseUp += new MouseEventHandler(LoginForm_MouseUp);

事件代码:

        private void MainWindow_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                mouseOff = new Point(-e.X, -e.Y); //得到变量的值
                leftFlag = true;                  //点击左键按下时标注为true;
            }
        }

        private void MainWindow_MouseMove(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                Point mouseSet = Control.MousePosition;
                mouseSet.Offset(mouseOff.X, mouseOff.Y);  //设置移动后的位置
                Location = mouseSet;

            }
        }

        private void LoginForm_MouseUp(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                leftFlag = false;//释放鼠标后标注为false;
            }
        }
追问
我照这样写了……编译出错是什么情况?
zhouxiang_1216
2014-01-29 · TA获得超过2591个赞
知道大有可为答主
回答量:1286
采纳率:33%
帮助的人:1369万
展开全部
没看示例,又提了一个问题?
public partial class Form1 : Form
{
Point p = new Point();
public Form1()
{
InitializeComponent();
}
private void button1_MouseDown(object sender, MouseEventArgs e)
{
p = e.Location;
}
private void button1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Button b = sender as Button;
b.Location = new Point(b.Location.X + (e.X - p.X), b.Location.Y + (e.Y - p.Y));
}
}
}
手机上网,看不了示例?这个可以了吧?希望对你有帮助
更多追问追答
追问
没看到附件。。。
照这个代码运行后按钮不动丫,多点几下窗体程序就出错了T_T
追答

你上一个问题中我上传了一个示例的,手机看不到?还以为你都解决了呢!这个是代码,你是不是没有定义事件,所以才没有反应,对照截图查看一下:

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-29
展开全部
button1.Location = new Point(MousePosition.X, MousePosition.Y);
追问
这个代码点击鼠标,按钮成随机的了,无法拖动
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式