Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 25

Событие Click элемента ToolStripButton на неактивной форме

07.11.2013, 08:02. Показов 2361. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Если форма неактивна и щелкам мышью по ToolStripButton событие Click срабатывает только после второго щелчка. Что нужно сделать, чтобы событие Click срабатывало после первого щелчка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2013, 08:02
Ответы с готовыми решениями:

Событие нажатие кнопки клавиатуры при неактивной форме
Как обработать событие нажатие кнопки клавиатуры при неактивной форме?

Событие по click, нахождение созданного элемента
Добрый день! Осваиваю C# и столкнулся с проблемой которую не могу решить по причине незнания...Прошу помочь т.к. перерыв интернет не...

Не работает событие click у кнопки пользовательского элемента управления
Сделал Я себе кнопку из пользовательского элемента управления, но когда я добавляю её на форму и добавляю событие click например что бы...

14
5 / 5 / 1
Регистрация: 27.07.2013
Сообщений: 64
07.11.2013, 11:44
не понял
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 25
07.11.2013, 12:04  [ТС]
Цитата Сообщение от Patriot_Patriot Посмотреть сообщение
не понял
Программа состоит из одной формы на форме элемент ToolStrip на нем элемент ToolStripButton при щелчке кнопкой мыши на нем появляется сообщение.
Запускаем программу -> щелкаем мышкой на пустом месте рабочего стола -> щелкаем на ToolStripButton, сообщение не появляется, а появляется оно только после 2-го щелчка.
Что нужно сделать чтобы сообщение появлялось после первого щелчка?
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
07.11.2013, 12:12
Цитата Сообщение от Andhrey Посмотреть сообщение
Что нужно сделать чтобы сообщение появлялось после первого щелчка?
Активировать форму, что и происходит при первом клике.
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 25
07.11.2013, 12:14  [ТС]
Цитата Сообщение от Nachrichter Посмотреть сообщение
Активировать форму, что и происходит при первом клике.
В обработчике какого события это нужно сделать?
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
07.11.2013, 12:21
Не уверен, что так легко получится, но попробуйте MouseEnter.
0
118 / 107 / 17
Регистрация: 10.02.2013
Сообщений: 278
07.11.2013, 12:24
Можно при наведении курсора на форму активировать ее, событие MouseMove
VB.NET
1
2
3
    Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
        Me.Activate()
    End Sub
либо как предложил Nachrichter будет даже лучше с MouseEnter, хотя бывает форма просто моргает на панели задач, не пойму в чем проблема
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 25
07.11.2013, 12:45  [ТС]
При активации формы в MouseEnter и MouseMove есть минус: окно формы на панели задач начинает мигать это не приемлемо если мы просто провели курсором мыши над ToolStripButton не нажимая. Это можно как то устранить?
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.11.2013, 13:35
Честно, я не понимаю, на фига такие костыли? Это нормальное поведение системы: сначала форма активируется, потом на ней можно что-то сделать. Это нормально! Решение же я вижу следующее:
  1. Ловить клик на форме
  2. Переводить его в экранные координаты
  3. Проверять, попадают ли эти координаты в прямоугольник, ограниченный кнопкой на панели.
  4. Если совпадают - вызывать клик по этой кнопке
Хотя мне кажется, что клик по форме тоже будет ловиться только после её активации.
1
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 25
07.11.2013, 13:50  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
Ловить клик на форме
А как его поймать если кликаешь на кнопке? События Click, MouseClick, MouseDown и MouseUp возникают только когда кликаешь на самой форме.
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.11.2013, 14:32
Цитата Сообщение от Andhrey Посмотреть сообщение
А как его поймать если кликаешь на кнопке? События Click, MouseClick, MouseDown и MouseUp возникают только когда кликаешь на самой форме.
Хм. Может использовать событие активации и в нём проверять?
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 25
07.11.2013, 14:49  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
Хм. Может использовать событие активации и в нём проверять?
А откуда в обработчике события активации формы взять координаты клика?
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.11.2013, 15:39
PointToClient
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
07.11.2013, 18:00
а если
VB.NET
1
2
3
4
5
Private Sub Form1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseEnter
        If Not ActiveForm Is Me Then
            Me.Activate()
        End If
    End Sub
по идее моргание должно исчезнуть, т.к. идет проверка не активно ли уже текущее окно.
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
08.11.2013, 14:53
Полагаю, что предлагаемый код решит проблему (при возвращении к форме достаточно одного клика на кнопке, чтобы она сработала).
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Class Form1
    Public Event MyActivate As EventHandler
    Public Event MyDeActivate As EventHandler
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Const WM_ACTIVATEAPP As Integer = &H1C
        MyBase.WndProc(m)
        If m.Msg = WM_ACTIVATEAPP Then
            If m.WParam.ToInt32 <> 0 Then
                OnMyActivate(EventArgs.Empty)
            Else
                OnMyDeActivate(EventArgs.Empty)
            End If
        End If
    End Sub
    Protected Sub OnMyActivate(ByVal e As EventArgs)
        RaiseEvent MyActivate(Me, e)
    End Sub
    Protected Sub OnMyDeActivate(ByVal e As EventArgs)
        RaiseEvent MyDeActivate(Me, e)
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox("Button1_Click")
    End Sub
End Class
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2013, 14:53
Помогаю со студенческими работами здесь

Как делегировано обрабатывать событие click родителя элемента ?
Как событие повесить на родителя ? Образец идеи $('#div_orders').on('click', $('.Embroidery').parent().parent().parent(), function()...

Как обработать событие click и событие нажития стрелки?
Допустим есть кнопка влево-вправо для горизонтального листания товаров. Как нужно кроссбраузерно обрабатывать одновременно событие click...

Какое событие отвечает за активацию элемента на форме?
к примеру активируется элемент этой функцией: edit4.SetFocus; и так как курсор на элементе едит4,то хочу поставить на событие в элементе...

GetKeyboardState в неактивной форме?
Как сделать, чтобы форма пряталась, появлялась (Visible) под управлением клавиши, например Caps Lock? Пробовал &quot;сунуть&quot;...

Изменить контрол в неактивной форме
Здравствуйте, ребят, у меня вопросец. Есть форма, она вызывает по батону другую форму вот так: ManageProducts pew =...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru