首页 > 解决方案 > C#:在表单之外获取鼠标点击位置 - 失去焦点,在外面点击后 form1 不在前面

问题描述

我需要在表单之外捕获鼠标单击位置。我正在使用 Windows 10 和 Visual Studio Professional 2017

为了捕获表单外的鼠标单击位置,我使用了表单停用事件:

    private void Form1_Deactivate(object sender, EventArgs e)
    {
        txtBox1.Text = "Xpos : " + Cursor.Position.X + "  Ypos : " + Cursor.Position.Y;
        this.Activate();
    }

在 Form1 窗口外单击后,文本框将由新的鼠标位置更新,但 Form1 不再处于活动状态。这意味着在 Form1 窗口外再次单击不会有任何效果。Form1 窗口标签字体颜色从黑色变为灰色。

this.Activate(); 行 显示以下行为(不幸的是,它不能按我的需要工作):

//this.Activate(); -> 在 Form1 窗口外单击后,我在 Windows 任务栏中看到 Form 1 不再处于活动状态

this.Activate(); -> 在 Form1 窗口外单击后,我在任务栏中看到 Form 1 仍处于活动状态(Form1 仍处于标记状态),有时它会闪烁橙色。

如何获得以下行为:

在 Form1 窗口外单击后,文本框将更新为新的单击位置,Form1 窗口保持活动状态并准备捕获 Form1 窗口外的下一次单击。此外,Form1 应始终位于最前面。

请看下面我当前的代码:

namespace GetMouseCursor2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Deactivate(object sender, EventArgs e)
        {
            txtBox1.Text = "Xpos : " + Cursor.Position.X + "  Ypos : " + Cursor.Position.Y;
            this.Activate();
        }
    }
}

非常感谢您提前提供帮助。简

标签: c#winforms

解决方案


推荐阅读