Программирование >>  Автоматически обновляемые приложения 

1 ... 81 82 83 [ 84 ] 85 86 87 ... 170


Мы написали код для обработчика события MouseMove. Это событие возникает, как только курсор мыши достигает границ кнопки. В этом случае сразу же вычисляется местоположение другой кнопки, и курсор мыши автоматически перемещается в нужное место. Еще раз обратите внимание, что для вычисления координат кнопки мы используем метод PointToScreen, который конвертирует координаты из клиентской системы координат в экранную систему координат. Данный пример носит немного шутливый характер, но на самом деле этот пример можно использовать не только в качестве шутки. Иногда требуется автоматически перенаправить курсор мыши в нужное место. Давайте напишем универсальную процедуру, представленную в листинге 8.6.

Листинг 6.6. Универсальная процедура перемещения мыши

public void JumpToControl(Control ctrl) {

Перемещаем курсор мыши в нижнюю часть середины элемента

Point objPoint = Ctrl.PointToScreen(new Point(0, 0));

objPoint.X += Ctrl.Width / 2;

objPoint.Y += (Ctrl.Height / 4) * 3;

Cursor.Position = objPoint;

private void butYes Click(object sender, EventArgs e) {

JumpToControl(InkSite);

Как видите, мы поместили созданную процедуру в событие click кнопки с надписью Да и указали элемент, на который должен переместиться указатель мыши. В нашем случае я разместил на форме для демонстрации примера элемент LinkLabel С именем inksite. Обратите внимание, что в нашей универсальной процедуре используется перемещение не в середину элемента управления, а на три четверти его высоты для большей изящности.

Point myPoint = butYes.PointToScreen(new Point(0, 0)); myPoint.X += butYes.Width / 2; myPoint.Y += butYes.Height / 2; Cursor.Position = myPoint;



Меняем кнопки мыши местами

у вашей мыши имеются, как минимум, две кнопки. Если вы правша, то основная кнопка у вас левая, а правая кнопка служит для вызова контекстного меню. Но у левшей своя точка зрения на эти кнопки, и основная кнопка у них правая. Чтобы поменять настройки для кнопок мыши, пользователь должен зайти в Панель управления и в апплете Мышь установить желаемые настройки. Но вы можете программно изменить эти настройки (листинг 8.7) через вызов функции Windows API swapMouseButton.

[ Листин/8.7. Замена tcHonoK мы

using System.Runtime.InteropServices;

[Dlllmport( user32.dll , EntryPoint = SwapMouseButton )] internal extern static int SwapMouseButton(int bSwap);

private void butSwapMouse Click(object sender, EventArgs e) {

Меняем кнопки мыши местами SwapMouseButton(1);

private void butRestoreMouse Click(object sender, EventArgs e) {

Восстанавливаем настройки мыши SwapMouseButton(0);

Чтобы убедиться, что кнопки мыши действительно поменялись, я расположил на форме текстовое поле, у которого по умолчанию имеется контекстное меню. Запустите проект и нажмите на кнопку с надписью Поменять местами. Теперь щелкните правой кнопкой на текстовом поле. Ничего не происходит? Так ведь правая кнопка теперь работает у вас как левая. Теперь щелкните на текстовом поле левой кнопкой - у вас появится контекстное меню. Замена кнопок местами носит глобальный характер и действует на все при-

Примечание

Пример работы с указателями мыши вы найдете в папке TwoButtons на прилагаемом к книге компакт-диске.



Как узнать координаты мыши?

Обратите внимание, что в .NET Framework 2.0 кроме событий click и

Doubleclick ПОЯВИЛИСЬ НОВЫе события MouseClick И MouseDoubleClick, которые В отличие от старых событий позволяют получить координаты мыши в момент щелчка. Как их использовать, показано в листинге 8.8.

Листинг 8.8. Получение координат мыши в момент щелчка

private void Forml MouseClick(object sender, MouseEventArgs e) {

Вьшодим координаты мыши в заголовке формы this.Text = MouseClick: + е.Button.ToString() + + е.Location.ToStringО;

private void Forml MouseDoubleClick(object sender, MouseEventArgs e) {

Выводим координаты мыши в заголовке формы this.Text = MouseDoubleClick: + е.Button.ToString() + + е.Location.ToStringО;

Примечание

Пример, в котором мы получаем координаты мыши, находится в папке MouseClick на прилагаемом диске.

Как преобразовать экранные координаты

в клиентские (для данного элемента) и наоборот?

Для преобразования координат точки используйте методы Control.PointToCiient (преобразовывает экранные координаты в клиент-

ложения. Если хотите вернуть старые настройки, то нажмите на кнопку Восстановить (догадайтесь, какой кнопкой надо сделать щелчок).

Примечание

Пример замены кнопок мыши находится в папке AdvancedMouse на прилагаемом диске.



1 ... 81 82 83 [ 84 ] 85 86 87 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика