Центрировать курсор над определенным элементом управления в C#
Некоторые программы перемещают мышь, чтобы центрировать курсор над определенным элементом управления, чтобы сделать какой-то выбор более простым. Например, он может перемещать мышь по кнопке OK диалога. Лично я считаю, что это раздражает как пользователь, но если вы решите, что вам нужно это сделать, вот как это сделать.
В этом примере используется метод CenterMouseOverControl, чтобы центрировать курсор над элементом управления.
// Наведите указатель мыши на элемент управления.
private void CenterMouseOverControl(Control ctl)
{
// Посмотрите, куда положить мышь.
Point target = new Point(
(ctl.Left + ctl.Right) / 2,
(ctl.Top + ctl.Bottom) / 2);
// Преобразование в экранные координаты.
Point screen_coords = ctl.Parent.PointToScreen(target);
Cursor.Position = screen_coords;
}
Сначала метод находит центр управления. Эта позиция находится в системе координат, используемой родителем элемента управления. Если элемент управления содержится непосредственно в форме, то это координаты формы. Если элемент управления находится внутри какого-либо другого контейнера, такого как Panel или GroupBox, то эти координаты относятся к верхнему левому углу родителя.
Обратите внимание также, что родительский элемент может содержаться в другом контейнере, что делает невозможным абсолютное позиционирование точки.
Обратите внимание также, что родительский элемент может содержаться в другом контейнере, что делает невозможным абсолютное позиционирование точки.
...
В этом примере используются следующие обработчики событий, чтобы каждая кнопка перемещала мышь над другой кнопкой. Это означает, что вы можете просто нажимать кнопку несколько раз, чтобы переместить курсор вперед и назад (что очень забавно, если вы легко удивлены).
// Переместите указатель мыши над другим элементом управления.
private void btnOverThere1_Click(object sender, EventArgs e)
{
CenterMouseOverControl(btnOverThere2);
}
private void btnOverThere2_Click(object sender, EventArgs e)
{
CenterMouseOverControl(btnOverThere1);
}
