C#UserControl,模拟点击

时间:2018-09-07 10:36:11

标签: c# .net winforms user-interface click

我有一个自定义控件,需要能够进行语法上的单击,但是看来Button是唯一实际上具有PerformClick()函数的类。

我现在已经把它放在一起工作了,但是我希望此控件在调用它的过程中尽可能地兼容。

    public void PerformClick() {
        var mousePos = new Point(Width / 2, Height / 2);
        OnMouseDown(new MouseEventArgs(MouseButtons.Left, 1, mousePos.X, mousePos.Y, 0));
        Thread.Sleep(75);
        OnMouseUp(new MouseEventArgs(MouseButtons.Left, 1, mousePos.X, mousePos.Y, 0));
        OnMouseClick(new MouseEventArgs(MouseButtons.Left, 1, mousePos.X, mousePos.Y, 0));
        OnClick(EventArgs.Empty);
    }

OnMouseDown> Thread.Sleep> OnMouseUp的作用是使该控件在从程序中单击时可以显示单击动画。

我想尽可能地模拟人为点击鼠标的感觉和可比性。我确实看到了使用user32.dll函数mouse_event(或类似的东西)的一些方法,该方法可以很好地工作,但是我找不到如何使控件的绝对位置传递给函数的方法。如果没有绝对位置,鼠标事件将被发送到错误的位置,并且很可能是错误的程序。

0 个答案:

没有答案