Как эмулировать нажатие на ToolBar.ButtonDropDown?

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

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

Oldman
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2003 (Пн) 12:23
Откуда: ТРТУ

Как эмулировать нажатие на ToolBar.ButtonDropDown?

Сообщение Oldman » 29.02.2004 (Вс) 0:03

Есть кнопка с DropDown. Заполнять ее меню я научился...
Но, как сделать, что при нажатии на кнопку (при определенных условиях) разворачивалось и DropDownМеню?
Смысл такой: кнопка отвечает за Вход/Выход пользователя из системы.
Когда пользователь в системе, цвет фона кнопки зеленый. Принажатии на нее, кнопка меняет цвет фона на красный, и произходит выход из системы.
При нажатии на кнопку с красным фоном, должно "выпасть" DropDownМеню (в нем список зарегестрированных пользователей). Юзер выбирает пользователя, выдается диалог на запрос пароля... При успешном вводе пароля, происходит вход в систему, а кнопка "зеленеет"... :)
Так вот, говоря по-русски, нужно сгенерировать "выпадение" DropDownМеню программно... :oops:
Ежики не колются, только бухают иногда

Oldman
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2003 (Пн) 12:23
Откуда: ТРТУ

Сообщение Oldman » 01.03.2004 (Пн) 13:56

Все, разобрался - "А ларчик просто открывался" :)
Надо было порсто прописать:
Код: Выделить всё
Dim xy As New Point
xy.X = TBar.Buttons(17).Rectangle.X
xy.Y = TBar.Buttons(17).Rectangle.Y + TBar.Buttons(17).Rectangle.Height
ContextMenu.Show(TBar, xy)


Вот теперь новая проблема. :oops:
Меню это создается динамически в процессе работы приложения.
Как теперь отслеживать нажатие пунктов меню?
Не прописывать же руками:
Код: Выделить всё
Me.ContextMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem2, Me.MenuItem3, Me.MenuItem4})
, тем более, что я не знаю какие пункты меню существуют в данный момент, тем более сколько их. Все это становится известно во время выполнения программы.
В MSDN (насрать тому в руки, кто его составлял :evil: ) ничего не понятно... Куча примеров как добавлять/удалять пункты меню, а как потом к ним доступ получить - ни слова...
Ежики не колются, только бухают иногда

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 01.03.2004 (Пн) 19:18

Вот пример решения твоей проблемы

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim x As Integer
ReDim MI(4)
For x = 0 To 4
MI(x) = New System.Windows.Forms.MenuItem("mi" & x.ToString, AddressOf xClick)
Next
CM = New System.Windows.Forms.ContextMenu(MI)
'Me.ToolBar1.Buttons(0).DropDownMenu = CM 'когда кнопка не одна
Me.ToolBarButton1.DropDownMenu = CM

End Sub

Public Sub xClick(ByVal sender As Object, ByVal e As System.EventArgs)
Dim nn As System.Windows.Forms.MenuItem
nn = sender
MsgBox(nn.Text) ' получаешь текст выбранного пункта меню
End Sub

Oldman
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2003 (Пн) 12:23
Откуда: ТРТУ

Сообщение Oldman » 02.03.2004 (Вт) 1:07

Огромное спасибо за код!!! :D
После некоторых корректировок все пошло!!!!
Главное идея :idea: :wink:
Еще раз сенкс!!!
Ежики не колются, только бухают иногда


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

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

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

    TopList