У меня есть пользовательский элемент управления, который я должен иметь возможность программно щелкать, но кажется, что 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
(или что-то в этом роде), которая могла бы хорошо работать, но я не мог найти, как получить абсолютное положение элементов управления для передачи в функцию. Без абсолютного положения события мыши будут отправлены в неправильное место и, скорее всего, в неправильную программу.