【问题标题】:Why i never get the correct exactly mouse cursor coordinates X and Y?为什么我从来没有得到正确的鼠标光标坐标 X 和 Y?
【发布时间】:2014-01-25 04:12:17
【问题描述】:

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

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)
        {

现在结果:

当我在单击按钮之前将鼠标放在按钮上时,只需将鼠标放在它上面,我在 label6 中看到:134,547

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

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

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

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

现在我使用一个按钮,但在它之前我使用了一个全局键挂钩,所以我可以在屏幕上的任何地方激活 MagniferForm,我想在屏幕上获取鼠标坐标光标!

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

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

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

【问题讨论】:

  • 当你使用断点时,即使你的程序在你使用 Cursor.Position 时停止了,你的鼠标光标仍在更新

标签: c# winforms


【解决方案1】:

很简单。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2014-02-09
    • 2011-01-13
    • 1970-01-01
    • 2012-08-06
    相关资源
    最近更新 更多