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

C#编程。 窗体上有一个按钮,通过鼠标在窗体上不同的地方拖动,按钮跟着鼠标拖动…… 请问在MouseDown事件中要怎么写才能实现? 我写Button1.Location=LocantionChance;结果编译失败。 求大神解救啊!!!

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

在窗体中定义两个变量

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;
            }
        }

追问

我照这样写了……编译出错是什么情况?

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-29
没看示例,又提了一个问题?
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

追答

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

追问

啊。。。!!
原来是按钮,我写在窗体事件中了,,,难怪,突然觉得自己好笨。。。
还好有你这样的大神啊!

现在可以了^_^。

追答

额,你要拖动按钮,怎么会写到窗体的事件上去......

追问

初学者丫,我们这学期刚刚学的C语言,下学期才C#,新手第一次接触面向对象,别见怪哇。
我想做一个象棋,现在就差倒入棋盘的背景了。
还好有你,不然我都不知道该怎么办了,你学这个多久了丫

追答

业余爱好者,用了三、四年了吧

本回答被提问者采纳
第2个回答  2014-01-29
button1.Location = new Point(MousePosition.X, MousePosition.Y);追问

这个代码点击鼠标,按钮成随机的了,无法拖动

用C#编写一个程序,按钮对象跟随鼠标指针在窗体内移动。当用户单击窗体时...
很简单,在窗体Form1上设置一个按钮button1,然后找到窗体的属性中的事件页面,找到鼠标事件中的 MouseMove 双击一下就会自动添加一个事件代码方法 private void Form1_MouseMove(object sender, MouseEventArgs e){ button1.Top = e.Y + 1;\/\/这个代码设置按钮的左上角纵坐标比鼠标的位置多一个点,...

C#中,在一个按钮上按下鼠标左键然后移动,整个窗体跟着光标移动,如何...
主要是用到按钮的 MouseDown MouseUp MouseMove MouseDown 是标志移动开始 MouseUp是 标志移动结束 MouseMove 是获取当前屏幕上的点,然后把窗体的 Location更改,不过有一个前提就是已经进入移动状态。代码给你写了也没有用。因为你复制进去是用不了的。而且另外的网友已经回答了代码,我这里就是告诉你为什...

C#中如何拖动窗体上Panel内的某个控件啊
鼠标点击事件,鼠标弹起事件配合鼠标移动事件就可以实现拖动

C#如何在窗体空白处点击鼠标获得一个点,在窗体上任意一个地方点都行
C#窗体有个MouseMove事件,当鼠标在上面移动时触发,这里的事件参数可以获得该点的X轴和Y轴坐标。public partial class Form1 : Form { public Form1(){ InitializeComponent();} private void Form1_MouseMove(object sender, MouseEventArgs e){ label1.Text = "X:" + e.X.ToString() + " Y:...

C# 中 有个窗体 窗体上有个按钮, 在按钮上按下左键时,窗体隐藏, 松开左...
private void button1_MouseDown(object sender, MouseEventArgs e){ this.Opacity = 0;} private void button1_MouseUp(object sender, MouseEventArgs e){ this.Opacity = 100;} \/\/鼠标事件,请给最佳答案,谢谢

...c#中实现单击一个按钮后,再在窗体内点击一次鼠标,把该按钮移动到第...
具体点,在你的class From1中,构造函数上面加一个 bool isClick=false;在button1_Click函数中 isClick=true;为窗体添加一个Click响应消息 在From1_Click函数中 if(isClick){ button1.Location=new Point(e.X-button1.Size.Width\/2,e.Y-button1.Size.Height\/2);isClick=false;} ...

c# winform 比如说一个窗体中有很多个button ,当鼠标在窗体中点击的时候...
\/\/以下代码,在Form1_Load中,为所有按钮添加事件,点击后显示此按钮的id private void Form1_Load(object sender, EventArgs e){ foreach (Control c in this.Controls){ try { Button b = c as Button;b.Click += new EventHandler(b_Click);} catch { } } } void b_Click(object ...

请问如何在C#窗体的按钮上做一个键盘事件?
你做的是一个事件对吧?例如:你要工具箱里找到[ab]Button这个按钮,双击两下,此时那个按钮就弹出了你的窗休上,然后你就用鼠标点下这个按钮,此时在右边就有一个属性窗口(如果没有,也是在 工具栏里的 视图选择中,选择 属性窗口 调出这个窗口)那属性窗口上有一个 "闪电"一样的图标,你选择它,进入事件...

C#中怎样在窗体打开的时候执行一个动作例如button1_Click
\/\/ 调用button1.PerformClick()也可以模拟鼠标点击button1 } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("button1被鼠标点击!"); } }}【例2】打开窗体时,模拟鼠标双击窗体 using System;using System.Windows.Forms;namespace WindowsFormsApplicati...

C#点击窗体上除某按钮外其他地方时弹出对话框怎么做?请教各位大侠!_百度...
首先 C#可以自动的添加事件监视 双击鼠标在设计面板里的程序窗体,添加的事件是form load窗体加载事件。把这个事件改成mouse系列的事件。可以通过设计器里的 窗体属性 的 事件列表中双击 mouse系列的空白格子。就能自动添加出相应事件的函数方法。在那个方法里写弹出对话框的代码就可以。messageBox.show("...

相似回答