如何使用KeyUp键在特定光标位置执行鼠标单击?

时间:2018-12-19 15:23:39

标签: c# wpf

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

KeyUp += WindowKeyUp;

在我拥有的方法中,其中 x y 是我从另一种方法得到的观点。

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?
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

我以某种方式同意这可能是XY问题。但是,由于我们不知道其背后的实际用例,因此我将说明如何获取最后的x和y。

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

她是XAML的一部分:

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

以下是处理程序:         私人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);
        }
    }