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