Control.Capture 属性 :http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.capture.aspx
Control.MousePosition 属性:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.mouseposition.aspxCapture是不是设置控件是否能捕获鼠标,当设为true时,才有MousePosition 值?这样的代码: public Form1()
        {
            InitializeComponent();
            button1.Capture = true;  //在构造函数中设置button1、button2能够捕获鼠标
            button2.Capture = true;
        }
 private void Form1_Click(object sender, EventArgs e)  //在Form1的点击事件中,输出鼠标坐标
        {
            MessageBox.Show(button1.MousePosition.X.ToString());  //为什么报错呢?
        }请问,为什么会报错呢?

解决方案 »

  1.   

    MessageBox.Show(button1.MousePosition.X.ToString()); 你难道要获取button的坐标?
      

  2.   

    MousePosition是捕获鼠标光标的位置啊,这是MSDN解释的啊,不是button1的坐标啊
      

  3.   

     不是button1而是Form1可以这样写 MessageBox.Show(Form1.MousePosition.X.ToString())
      

  4.   

    楼主:MousePosition是静态成员,不同通过实例对象范围,要直接是用类:private void Form1_Click(object sender, EventArgs e) //在Form1的点击事件中,输出鼠标坐标
      {
      MessageBox.Show(Button.MousePosition.X.ToString()); //为什么报错呢?
      }
      

  5.   

    Point   p   =   Control.PointToClient([Point])   将指定屏幕点的位置计算成工作区坐标。 
    Point   p   =   Control.PointToScreen([Point])   将指定工作区点的位置计算成屏幕坐标。
    获取鼠标就这样就行了撒
      

  6.   

    既然MousePosition是获取鼠标光标的位置,那前缀还有什么用处呢?Form1.MousePosition与Button.MousePosition都是获取鼠标光标的位置,而且,其值也是相等的吧。
      

  7.   

    既然MousePosition是获取鼠标光标的位置,那前缀还有什么用处呢?Form1.MousePosition与Button.MousePosition都是获取鼠标光标的位置,而且,其值也是相等的吧。
      

  8.   

    看LZ的意思好像是想得到当前鼠标位置相对于控件button1的坐标,其实就用鼠标的屏幕坐标转一下就行了。
            private void Form1_Click(object sender, EventArgs e) //在Form1的点击事件中,输出鼠标坐标
            {
                MessageBox.Show(button1.PointToClient(Control.MousePosition).X.ToString());
            }