Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261

Событие ContextMenuStrip для формы

26.10.2017, 10:20. Показов 1588. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Помните ContextMenuStrip(всплывающее меню закладок иногда с галочками) его событие,
когда мышь оказывается в другой области экрана и
кликается что-то или изменяется фокус.... и ContextMenuStrip закрывается,
нужно сделать форму с таким же событием. Есть ли такое событие для формы?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2017, 10:20
Ответы с готовыми решениями:

Вызов ContextMenuStrip только при щелчке в верхней части формы
Здравствуйте. Я сделал FormBorderStyle = None и нарисовал свой заголовок. Как сделать, чтобы ContextMenuStrip появлялся только при щелчке...

Событие Load для несуществующей формы
Среда Visual Basic STUDIO’2010 Professional В проекте XML, поставленном со студией'2010,имеется единственная форма...

Добавить ContextMenuStrip для панели
Прошу помогите разобраться, уже везде просмотрела, но никак не могу исправить ошибку. В общем, надо чтоб на панели PanelAlus появилось...

5
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
26.10.2017, 23:19
Цитата Сообщение от Navthe Посмотреть сообщение
его событие,
когда мышь оказывается в другой области экрана и
кликается что-то или изменяется фокус....
LostFocus приходит в голову
Цитата Сообщение от Navthe Посмотреть сообщение
Есть ли такое событие для формы?
Да. LostFocus
1
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.10.2017, 03:32  [ТС]
Winney, LostFocus подходит только наполовину, это между объектами и формами программы, но не действует когда просто передвигаешь курсор и кликаешь вне программы.

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

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
 
Public Function pvButton() As MouseButtonConstants
    Select Case True
        Case GetAsyncKeyState(vbKeyLButton) < 0
            pvButton = vbLeftButton
        Case GetAsyncKeyState(vbKeyRButton) < 0
            pvButton = vbRightButton
        Case GetAsyncKeyState(vbKeyMButton) < 0
            pvButton = vbMiddleButton
    End Select
End Function
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
27.10.2017, 13:41
Не нужно сломя голову лезть в API, и в NET много всего есть. Может быть вам нужно событие MouseLeave? Оно возникает, когда указатель мыши покидает границы элемента управления. Кроме того, можно события комбинировать друг с другом.
3
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
27.10.2017, 14:16
Лучший ответ Сообщение было отмечено Navthe как решение

Решение

М.б. так
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Imports System.Runtime.InteropServices
Public Class Form5
    Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Int32
    <StructLayout(LayoutKind.Sequential)> _
    Private Structure POINTAPI
        Public x As Int32
        Public y As Int32
    End Structure
    Private msPoint As New POINTAPI
    Private Sub Form5_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 200
        Timer1.Enabled = True
    End Sub
    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        GetCursorPos(msPoint)
        If msPoint.x < Me.Left OrElse msPoint.x > Me.Right OrElse msPoint.y < Me.Top OrElse msPoint.y > Me.Bottom Then
            Me.Hide()
        Else
            Me.Show()
        End If
    End Sub
End Class
1
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.10.2017, 20:59  [ТС]
Winney, скоприровать contextmenustrip неполучилось, такого события действительно нет, обидно,
придется делать немного другое меню.
и код который я указал из vb6 а не vb.net, а в vb.net код уже не действует,

Думаю что здесь вы правы действительно можно использовать варинты событий наведения, отведения курсора.
Ovva, спасибо за пример, буду пробывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2017, 20:59
Помогаю со студенческими работами здесь

Не срабатывает событие формы KeyPress
Почему то не работает процедура KeyPress. А KeyDown работает. Прошу помощи. Private Sub Button1_KeyDown(ByVal sender As Object, ByVal e...

Не срабатывает событие загрузки формы
Всем привет. Не выгружаются элементы на Form2 Public Class Form2 Public checkBoxMassive(10, 2) As CheckBox Private Sub...

Отловить событие закрытия формы
Как перехватить нажатие на на главной форме (BD), чтобы вызвать другую форму с кнопками да/нет и далее закрыть или не закрыть в...

Не срабатывает при запуске формы событие
Скажите я правильно понимаю ,что нижнее событие срабатывает только при загрузке основной формы? Private Sub Form_Load() ...

Как программно вызвать событие формы Paint?
Ситуация: при завершении перетаскивания текстбокса необходимо вызвать событие Paint, чтобы чертреж перерисовал линии под текстбокс. Как...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru