Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2015, 18:03   #1
Regressor
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 36
По умолчанию Обработка событий клава + мышь.

Как обработать одновременно оба события? К примеру, если один и тот же элемент, или форма, требуют одинаковых действий с мышью, но для разных задач, проще всего разделить их предварительным нажатием клавиши.
Например, как обработать вначале проверку Ctrl, а затем уже мыши?

Нажатую клавишу перехватывает форма:

Код:
 private void MainForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control)
        {
         // у тут уже обработать событие мыши, например, для listView 
 
        }

    }
Или, если Ctrl нужно будет для разных сочетаний с клавиатурой, то после обработки нажатия этой клавиши, далее все через Switch

Как выглядит срока обработки нажатия мыши внутри конструкции?
Для отдельной подпрограммы ясно
Код:
private void listView_MouseDoubleClick(object sender, MouseEventArgs e)
    {
              
    }
а встроенная обработка?
Regressor вне форума Ответить с цитированием
Старый 19.03.2015, 18:27   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что-то я не понял что вы хотите сделать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.03.2015, 18:44   #3
Regressor
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 36
По умолчанию

Я хочу чтобы события мыши обрабатывались только после выполнения условий обработки клавиатуры. То есть, если я просто кликну по listView пару раз, происходит одна операция, если я сделаю то же самое (или кликну один раз) но предварительно нажав какую то клавишу, например, Ctrl, должна отработать другая процедура.

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

Наоборот я сделал. Вот в этом коде сначала проверяется клик мыши, потом нажатая клавиша и если оба условия совпадают выполнятся нужный код:

Код:
 private void listViewCallRegister_MouseClick(object sender, MouseEventArgs e)
    {
        if (Control.ModifierKeys == Keys.Control)
          {
              // тут нужный код
          }
    }
Regressor вне форума Ответить с цитированием
Старый 19.03.2015, 19:00   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что-то странная задача.

Ну видимо нужен какой-то флаг для запоминания, что была нажата.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.03.2015, 19:14   #5
Regressor
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 36
По умолчанию

Зачем флаг? Достаточно обрабатывать события последовательно, внутри одной конструкции. Просто я не знаю как должна выглядеть строка проверки состояния мыши. if (listView.MouseClick == true) не прокатывает.

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

Последний раз редактировалось Regressor; 19.03.2015 в 19:21.
Regressor вне форума Ответить с цитированием
Старый 19.03.2015, 19:16   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык если надо просто CTRL+клик, то чем не подошло в MouseClick?

Код:
private void listView_MouseClick(object sender, MouseEventArgs e)
{
    if (ModifierKeys == Keys.Control)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 19.03.2015 в 19:39.
Alex11223 вне форума Ответить с цитированием
Старый 19.03.2015, 19:53   #7
Regressor
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 36
По умолчанию

Я же выше такой же код выложил, он работает. Но в нем сначала отрабатывается событие мыши, а потом клавиатуры.
Мне же нужно наоборот - вначале клава, потом мышь.
Regressor вне форума Ответить с цитированием
Старый 19.03.2015, 19:55   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Я не понимаю как это и зачем.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.03.2015, 20:19   #9
Regressor
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 36
По умолчанию

Насчет "на понимаю как" понятно.
Насчет зачем - мне так нужно. Если первой обработать нажатую клавишу, то внутрь можно встроить массу других событий от клавиатуры и мыши которые будут отрабатываться только при нажатой клавише Ctrl.
Ну ок, поищем еще где нибудь. Вообще же, на VB6 такие вещи делаются элементарно и главное, логически донельзя понятно, но синтаксис настолько разный, что оттуда примеры не подходят...
Regressor вне форума Ответить с цитированием
Старый 19.03.2015, 20:34   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну обрабатывайте клики тут, а клавиши без кликов в другом. Или сделайте метод, которому вся эта инфа как-нибудь передается и вызывайте в обоих обработчиках.

А как в VB6?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
клава и мышь Form_13 Компьютерное железо 1 03.12.2011 19:08
Не работает клава а при нажатии на нее перестает работать мышь!! Дима я Компьютерное железо 10 02.03.2010 17:10
Мышь и клава не работают RockForr Компьютерное железо 12 20.09.2009 16:13
Помогите не работают клава и мышь vitalik8106 Компьютерное железо 4 05.01.2009 16:21
Клава&мышь MAcK Win Api 5 23.08.2007 15:33