Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/27: Рейтинг темы: голосов - 27, средняя оценка - 4.63
Tolias28
206 / 128 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
1

Событие нажатия колеса мыши

20.06.2012, 04:32. Просмотров 5435. Ответов 8
Метки нет (Все метки)

Хочу сделать так, чтобы при нажатии колесом мыши в текстовом поле происходило некоторое действие. События для отслеживания нажатия правой и левой кнопки мыши я в списке событий вижу. А вот где событие, которое происходило бы при нажатии колесика мышки, я что-то найти никак не могу... А между тем в многих программах я видел, что оно используется.

Подскажите, как перехватить нажатия по колесику мыши.
1
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2012, 04:32
Ответы с готовыми решениями:

Событие нажатия кнопки мыши в Юзер Контроле
Есть output : UserControl, подписка на событие внутри контрола, this.Click += new...

Событие нажатия правой кнопкой мыши на ячейке таблицы
Привет всем! Полдня бьюсь над такой задачей: при нажатии правой кнопкой мыши в определенном...

Отловить событие нажатия клавиши мыши при Drag&Drop
Сабж. В процессе перетаскивания отловить событие MouseDown. Начинаю перетягивание при зажатой...

Масштабирование изображения при прокрутке колеса мыши
Здравствуйте! Необходимо реализовать масштабирование изображения в PictureBox. Как по мне...

Как поймать событие прокрутки колеса user32.dll?
Привет! У меня стоит задача ловить все действия мыши и их обрабатывать, но ловить не в форме по...

8
Goal
Футболист
517 / 419 / 140
Регистрация: 31.10.2011
Сообщений: 1,008
Завершенные тесты: 2
20.06.2012, 05:03 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public Form1()
        {
            InitializeComponent();
           this.MouseWheel += new MouseEventHandler(this_MouseWheel);
        }
 
        void this_MouseWheel(object sender, MouseEventArgs e)
        {
            if (e.Delta > 0)
                textBox1.Text = "Вверх";
            else
                textBox1.Text = "Вниз";
        }
1
Tolias28
206 / 128 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
20.06.2012, 05:18  [ТС] 3
Goal, покажите мне в моем сообщении, где я просил событие для прокрутки колеса мыши?? Я знаю про событие MouseWheel, но не оно мне нужно. Мне нужно событие не для прокрутки, а для нажатия колесика мыши!

Добавлено через 1 минуту
Или вы не в курсе, что колесико мыши также может нажиматься? Ну тогда попробуйте его на своей мышке нажать (;

Добавлено через 8 минут

Не по теме:

Например, в браузере если нажать колесико мыши, то курсор мышки поменяется на значок перемещения, и теперь если не нажимать ни на какие кнопки мышки а просто тянуть мышку вверх или вниз, то страница будет плавно прокручиваться вверх или вниз.


Как видите, в браузере клик по колесику как-то перехватывается. Неужели в C# нельзя его тоже перехватить?
0
turbanoff
Эксперт Java
4037 / 3772 / 743
Регистрация: 18.05.2010
Сообщений: 9,330
Записей в блоге: 11
Завершенные тесты: 1
20.06.2012, 07:10 4
Событие клика на колесика - событие клика мышкой. MouseClick.
В обработчик передеается MouseEventArgs, у которого есть поле Button, в котором указаывается на какую именно кнопку нажали.
C#
1
this.MouseClick += (sender, args) => MessageBox.Show(args.Button.ToString());
0
20.06.2012, 07:10
Tolias28
206 / 128 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
20.06.2012, 07:17  [ТС] 5
Цитата Сообщение от turbanoff Посмотреть сообщение
Событие клика на колесика - событие клика мышкой. MouseClick
Это событие не реагирует на нажатие колесиком в текстовом поле

Проверял подписываться на это событие для формы, то при щелчке по колесику событие выполняется. А вот для текстового поля почему-то не хочет...
0
turbanoff
Эксперт Java
4037 / 3772 / 743
Регистрация: 18.05.2010
Сообщений: 9,330
Записей в блоге: 11
Завершенные тесты: 1
20.06.2012, 07:48 6
Тогда вам придется создать свой класс текстовго поля, унаследованный от TextBox, и перегрузить методы OnMouseDown, OnMouseUp.
http://stackoverflow.com/questions/1581627/unable-to-detect-right-mouseclick-in-combobox
1
Tolias28
206 / 128 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
20.06.2012, 08:05  [ТС] 7
Да..м.. Печально это немного Спасибо за помощь!
0
Памирыч
Почетный модератор
21108 / 8836 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
20.06.2012, 20:36 8
Tolias28, вмето печали попробовать обработать событие MouseDown (как и предлагал turbanoff).
Только насчет перегрузок я не понял, может в шарпе они все таки необходимы?
Вот ее реализация для VB
vb.net
1
2
3
4
5
    Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Middle Then
            TextBox1.Text = "Middle of nowhere"
        End If
    End Sub
1
Tolias28
206 / 128 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
20.06.2012, 20:39  [ТС] 9
Цитата Сообщение от Памирыч Посмотреть сообщение
Tolias28, вмето печали попробовать обработать событие MouseDown
да то я так сказал
Я просто решил позднее взяться за эту тему, так как сейчас есть дела поважнее.

Спасибо за код!
0
20.06.2012, 20:39
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2012, 20:39

Как заставить событие MouseWheel срабатывать 1 раз на щелчок колеса?
Количество срабатываний MouseWheel содержится в системной переменной...

Когда кнопка мыши зажата, событие попадание курсора мыши в фокус контрола не работает
Есть несколько контролов на форме, на все есть событие возникающее когда мышь попадает на этот...

Координаты нажатия мыши
есть круг определенного радиуса в 30 пикселей, нужно окрашивать форму в более яркий цвет чем ближе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru