MouseDown + Key

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

MouseDown + Key

Сообщение -=TsA=- » 01.04.2010 (Чт) 8:02

Как отследить в событии MouseDown объекта нажатие клавиш?
Например нужно отловить ЛеваяКнопкаМыши + Shift.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: MouseDown + Key

Сообщение MIT » 01.04.2010 (Чт) 8:19

Например так:

Код: Выделить всё
    Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As VirtualKeyStates) As Short
   
    Public Shared Function IsKeyPressed(ByVal testKey As VirtualKeyStates) As Boolean
        Dim keyPressed As Boolean = false
        Dim result As Short = GetKeyState(testKey)
        Select Case (result)
            Case 0
                ' Not pressed and not toggled on.
                keyPressed = false
            Case 1
                ' Not pressed, but toggled on
                keyPressed = false
            Case Else
                keyPressed = true
        End Select
        Return keyPressed
    End Function
и в событии пишешь
Код: Выделить всё
If IsKeyPressed(Win32.VirtualKeyStates.VK_SHIFT)
Декларацию VirtualKeyStates сам найдешь.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

Re: MouseDown + Key

Сообщение -=TsA=- » 01.04.2010 (Чт) 8:30

То есть, если я правильно понял, встроенными средствами как это было в VB6 не обойтись?

Код: Выделить всё
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbLeftButton Then
        If Shift = vbShiftMask Then

        End If
    End If
End Sub

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: MouseDown + Key

Сообщение Денис » 01.04.2010 (Чт) 14:48

[quote="-=TsA=-"]То есть, если я правильно понял, встроенными средствами как это было в VB6 не обойтись?

Начинайте отсюда и дальше по аналогии.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: MouseDown + Key

Сообщение MIT » 01.04.2010 (Чт) 16:14

Аналогия неверная, мышиные нажатия и клавиатурные передают разные параметры в обработчик события.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: MouseDown + Key

Сообщение Денис » 01.04.2010 (Чт) 17:18

MIT писал(а):Аналогия неверная, мышиные нажатия и клавиатурные передают разные параметры в обработчик события.

А что нельзя например, юзингом, создать класс-мышь и получить его состояние? Что-то типа MouseEventArgs..
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: MouseDown + Key

Сообщение MIT » 01.04.2010 (Чт) 19:54

Классы Мышь и Клавиатура есть в дотнете 3.5, но пользоваться им только из-за них двух достаточно глупо.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: MouseDown + Key

Сообщение Денис » 02.04.2010 (Пт) 8:42

MIT писал(а):пользоваться им только из-за них двух достаточно глупо.

Слишком громко сказано. НЕ пользоваться удобным инструментом, когда он есть, вот это глупо. Еще глупее - два-три года игнорировать новый инструмент пока им не начнут пользоваться все остальные.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: MouseDown + Key

Сообщение MIT » 02.04.2010 (Пт) 12:16

Денис, послушай. Мне искренне наплевать на всех остальных, которые уже два года пользуются этим удобным интструментом. Мне точно также наплевать на то, что ты считаешь мою точку зрения неверной. Нравится пользоваться — пользуйся, мне плевать я не против. То что большинство рациональных программистов думают (и должны думать) о пользователе, а не о себе — факт.
Хакер очень кстати написал заметку в своём блоге, перечитай её ещё пару раз что бы понять смысл. Пусть в данном случае речь идет не о производительности (ведь и так и так используются одинаковые методы), а об усилиях, которые должен приложить пользователь для пользования программой, не суть.
Если выбирать между обязыванием пользователей качать 230-ти метровый рантайм вместо 22-х метрового и включением своих мозгов (и Гугла) на немного времени, то я выбираю второе. Если тебе, в свою очередь, плевать на пользователей удобнее пользоваться первым вариантом — дело твоё, не мне тебя судить.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: MouseDown + Key

Сообщение Денис » 02.04.2010 (Пт) 19:35

MIT писал(а):Денис, послушай.


У меня нет слов! Это что было? Баттхёрт штоле?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: MouseDown + Key

Сообщение Dakovalev1 » 06.04.2010 (Вт) 16:32

Не знаю. Может я скажу глупость, но можно в событии keydown при нажатии нужной клавиши присваивать какой-то переменной true, а в событии keyup присваивать переменной false, а в событии мышиных нажатий проверять эту переменную. Вроде так, хотя не знаю точно ли это будет или нет. :?:


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44

    TopList