Центрировать курсор над определенным элементом управления в 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);
}

Источник: http://csharphelper.com/blog/2016/11/center-the-cursor-over-a-particular-control-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector