为什么我从来没有得到正确的鼠标光标坐标X和Y?

时间:2014-01-25 04:12:17

标签: c# winforms

在主窗体中我有这段代码:

private void button1_Click(object sender, EventArgs e)
        {
            if (mf1 == null)
            {
                mf1 = new MagnifierForm(mConfiguration, System.Windows.Forms.Cursor.Position);
                mf1.Show();
            }
        }

然后实时查看鼠标位置我添加了鼠标移动事件:

private void CloudsAlertForm_MouseMove(object sender, MouseEventArgs e)
        {
            label6.Text = e.X + " == " + e.Y;
        }

这是MagnifierForm形式的顶部:

public MagnifierForm(Configuration configuration, Point startPoint)
        {

现在结果:

当我将鼠标放在按钮上之后,我点击按钮只需将鼠标放在它上面,我在标签6中看到:134,547

然后在这一行:mf1 = new MagnifierForm(mConfiguration,System.Windows.Forms.Cursor.Position);在位置上我看到每次我用一个断点将鼠标放在位置上时我每次看到另一个坐标。

在MagnifierForm顶部,我看到Point startPoint 290,67

问题是什么是真正的鼠标光标坐标以及为什么每个变量都显示其他东西?

我想要做的是当我点击按钮时,当我点击按钮时,表格MagnifierForm将在屏幕上获得精确的鼠标光标坐标!不是表格的鼠标光标坐标,而是在屏幕上!

现在我正在使用一个按钮,但在它使用全局按键挂钩之前,我可以在屏幕上的任何位置激活MagniferForm,我想让鼠标坐标光标在屏幕上!

我仍然不明白为什么每次我在每个变量上得到不同的坐标?

在我点击按钮的主窗体上,我也有一个计时器。计时器正在运行并做一些事情。当我在计时器运行时单击按钮时,我会在某些x,y坐标上看到MagnifierForm,然后我看到它像滑动一样移动到我的鼠标光标所在的位置。 但是,当我点击按钮时,如果没有运行计时器,我会看到右侧的放大镜形状正好在我鼠标光标所在的位置!

为什么当计时器运行时我看到MagnifierForm从某个地方滑动/移动到光标所在的位置?

1 个答案:

答案 0 :(得分:3)

很简单。

Cursor.Position为您提供相对于屏幕的鼠标坐标。而MouseEventArgs为您提供相对于您正在处理点击事件的控件的坐标。