首页 > 解决方案 > 如何使用 KeyUp 键在特定光标位置执行鼠标单击?

问题描述

所以在构造函数中我有这个

KeyUp += WindowKeyUp;

在我有这个的方法中,xy是我从另一种方法中得到的一个点。

private void DoMouseClick(int x, int y)
{
    SetCursorPos(x, y);
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);
}

那么当我释放空格键时,我应该在这里写什么来在那个特定的光标位置执行鼠标单击?

private void WindowKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Space)
    {
       //what to write here?
    }
}

提前致谢!

标签: c#wpf

解决方案


我以某种方式同意这可能是一个 XY 问题。但由于我们不知道它背后的真实用例,我将展示如何获得最后的 x 和 y。

您可以对鼠标移动事件做出反应以存储 x 和 y,并在收到按键事件时使用该信息。

她是 XAML 部分:

<StackPanel KeyDown="StackPanel_KeyDown" MouseMove="StackPanel_MouseMove">

以下是处理程序: private void DoMouseClick(double x, double y) { //... }

    private double m_x = 0.0;
    private double m_y = 0.0;
    private void StackPanel_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
    {
        var p = e.GetPosition(this);
        m_x = p.X;
        m_y = p.Y;
    }

    private void StackPanel_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (e.Key == System.Windows.Input.Key.Space) {
            DoMouseClick(m_x, m_y);
        }
    }

推荐阅读