|
Программирование >> Автоматически обновляемые приложения
Мы написали код для обработчика события 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 на прилагаемом диске.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |