Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787

Вызвать событие одного контрола в другом

30.06.2016, 23:23. Показов 1351. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток!
Пожалуйста подскажите как в событии Text1_MouseMove вызвать событие Combo1_Click.
Т.е на форме имеется TextBox и ComboBox нужно,чтобы при наведении указателя мыши на TextBox сработал выпадающий список ComboBox как при клике по ComboBox.
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2016, 23:23
Ответы с готовыми решениями:

Вызвать событие в другом классе
Добрый день. Есть класс MainWindow, в нём есть функция AddPreloadedCharts(). Есть статический класс DataManager, в котором хранятся...

Вызвать одно событие в другом
Есть событие по закрытию окна this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); и...

Переадресовать событие от одного контрола другому
Я создал свой контрол MovePanel (панель, которую можно перемещать мышкой). Как сделать, чтобы события MouseUp -Move и -Down лейблов,...

4
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
01.07.2016, 03:16
У нас тут знаете-ли новый тренд
обсуждаем всякую ересь (https://www.cyberforum.ru/visu... 73608.html)
вместо программирования.
Вам я решил ответить потому!, что У вас висит 0, тоесть вам никто не ответил досихпор
так вот.. ближе к программированию, это самый короткий наглядный код
мне уже тут не раз намекали что нужно писать покороче, выполняю просьбу. Это самый короткий код
для Вашего случая (без портянок и тысячи API)

The Trick бы Вам насоветовал ..

а еще есть некий Alex777 который вообще по ошибке
мне вместо +1 поставил -160 потом объяснил что ошибся, извинился в личном сообщении
пообещал вернуть но не может, форум не пропускает эти действия.. теперь наверное забыл ..
но я буду ему напоминать иногда, как сейчас...

Итак! На форме лежат Text1 и Combo1:
ниже приведен модуль формы для особенно догадливых

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Option Explicit
Dim b As Boolean, v
Private Sub Form_Load()
    For Each v In Array("Рок", "Наркотики", "Искуство"): Combo1.AddItem v: Next
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If b Then b = False
End Sub
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If b = False Then b = 1: Combo1.SetFocus: SendKeys "%+{DOWN}"
End Sub
2
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
02.07.2016, 00:46  [ТС]
Цитата Сообщение от fever brain Посмотреть сообщение
ниже приведен модуль формы для особенно догадливых
Ну зачем так иронизировать?Я же только осваиваю основы VB6 и у меня возникают кучи вопросов,ответы на которые ищу сам.Что то получается,что то и нет.
Сейчас пытаюсь разобраться наследовании интерфейсов,потому как VB6 не поддерживает наследование и полиморфизм.
Прочитал не мало, но толком так и не разобрался.Сколько примеров не встречал приходилось не мало повозиться чтобы получить хоть какой то результат.
Для примера я взял ComboBox, у него нет события MouseMove и TextBox у которого оно есть и пытаюсь их объединить.Как это сделать я не знаю.
Пример реализации через Ip функции есть
События MouseMove для элемента Combobox
В Вашем примере просто эмулируется нажатие клавиш, такие примеры тоже есть.
И Ваш код без сомнения, как выход из положения,работает.
Возможно я лезу не туда куда нужно?
Спасибо вам огромное!
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
02.07.2016, 08:21
А вот еще один интересный пример, на форме три ComboBox'-а которые находятся в контейнерах PictureBox
у которых в свою очередь события выключенны Enabled = False
а включаются они только тогда, когда координаты указателя, в событии формы MouseMoove совпадают
с координатами PictureBox, на этот момент времени.
События PictureBox включаются, и посылается эмуляция клавиши к ComboBox, в противном же случае, свойства снова выключаются так-что никаких залипаний не должно быть

Вобщем эфект такой , что при наведении курсора на любой ComboBox, он автоматически раскрывается
Единственное что нельзя сделать в расскрытом ComboBox, так это закрыть его таким-же способом
так как весь ввод клавиш и мыши блокируется только Whnd ComboBox'а (Документация SetCapture)
форма в этот момент не реагирует на собития MouseMoove

Конечно сабкласингом или через таймер можно это решить, тогда эфект будет еще интереснее

Код формы:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Option Explicit
Dim i&, v
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    For i = 0 To Combo1.UBound
        With Controls("p" & i)
            If X > .Left And X < .Left + .Width And Y > .Top And Y < .Height + .Top Then
                .Enabled = 1
                With Combo1(i)
                    .SetFocus
                    SendKeys "%{down}"
                End With
            Else: .Enabled = 0
            End If
        End With
    Next
End Sub
Private Sub Form_Load()
    Const r = 90
    Dim l&, t&, w&, h&
    For i = 0 To 2
        If i = 0 Then
            With Combo1(i): l = .Left: t = .Top: w = .Width: h = .Height: End With
        Else
            Load Combo1(i)
        End If
        With Combo1(i)
            Set .Container = Controls.Add("vb.PictureBox", "p" & i)
            With .Container
                .Move l, t, w, h: l = l + w + r
                .BorderStyle = 0
                .Enabled = 0
                .Visible = 1
            End With
            For Each v In Choose(i, Array("Январь", "Февраль", "Март"), Array("Понедельник", "Среда", "Пятница"), Array(10, 20, 30))
                .AddItem v
            Next
            .ListIndex = 0
            .Move 0, 0, w
            .Visible = 1
        End With
    Next
End Sub
Function Choose(ByVal i&, ParamArray a()): Choose = a(i): End Function
Вложения
Тип файла: rar Form1.rar (974 байт, 5 просмотров)
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
02.07.2016, 12:04
Теоретически можно даже не три пикчура а один пикчур использовать, если его растянуть по всей форме
и включать/выключать при определенных условиях совпадения оконных координат в событии MouseMoove

Добавлено через 3 часа 26 минут
Сделал опечатку извиняюсь
Цитата Сообщение от fever brain Посмотреть сообщение
блокируется только Whnd ComboBox'а
hWnd
Кстати именно поэтому у меня не получилось использовать раскрывшуюся часть
в качестве отцовского окна для своей палитры выбора цветов
добавить PictureBox туда удалось, также удалось растянуть до размеров палитры, онако при раскрытии
PictureBox не реагировал на клики, и пришлось от этой идеи отказаться
пришлось полностью имитировать ComboBox набором более простых контролов
а вываливающая часть это тот самый PictureBox только не принадлежащий не одному окну
Миниатюры
Вызвать событие одного контрола в другом  
Вложения
Тип файла: rar Выбор цвета.rar (23.2 Кб, 6 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2016, 12:04
Помогаю со студенческими работами здесь

Как вызвать метод одного класса в другом?
У меня есть два отдельных класса. Вопрос, как вызвать метод одного класса в другом? что-то слышал о экземпляре класса, указатели, но так...

Вызвать нужное событие из динамически создаваемого TextBlock в другом окне из активного окна
Нужно реализовать что-то в духе Toast Notification из Windows 8 Есть главное окно приложения-MainWindow По некоторому событию...

Как из одного js-файла вызвать функцию в другом js-файле
Хочется добавить немного модульности в свои JavaScript и я решил создать несколько js-файлов со своими функциями. Но как теперь вызвать...

Потоки. Как из одного потока вызвать выполнение метода в другом потоке
Необходимо 50 раз в секунду выполнять методы в двух параллельно работающих потоках синхронизировано. Для этого я создал третий поток -...

Как вызвать стринг из одного класса чтобы он был виден в другом классе?
Доброго дня всем,у меня появился вопрос по классам. И так,у меня есть 2 класса ProcessClass.java и My30.java.В процессе ProcessClass.java...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru