Дублирование конпок toolbar командами меню

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

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

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Дублирование конпок toolbar командами меню

Сообщение kroskros » 26.04.2006 (Ср) 10:51

Сегодня просто горю на работе... сам на себя поражаюсь... :wink:

В свое время сделал на форме toolbar, по нажатию кнопок открываются форм и т.п...

выглядит примерно так:
Код: Выделить всё
Private Sub tlbMainWindow_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles tlbMainWindow.ButtonClick
   
        Select Case e.Button.Text
            Case "Работа"
                If tlbMainWindow.Buttons.Item(1).Pushed = True Then
                    frmWork = New frmWorkClass
                    frmWork.MdiParent = Me
                    frmWork.Show()
                Else
                    e.Button.Pushed = True
                    frmWork.Activate()
                    frmWork.WindowState = FormWindowState.Normal
                End If

            Case "ГИП"
                If tlbMainWindow.Buttons.Item(2).Pushed = True Then
                    frmGip = New frmGipEditClass
                    frmGip.MdiParent = Me
                    frmGip.Height = 230
                    frmGip.Show()
                Else
                    e.Button.Pushed = True
                    frmGip.Activate()
                    frmGip.WindowState = FormWindowState.Normal
                End If
            Case Else
        End Select

    End Sub


Теперь мысль пришла добавить на форму MenuStripe,
показалось логичным прописать там все команды, типа кто хочет пользуется кнопками, кто менюшками, кто всем сразу...

КАК сделать так, чтобы по menuitem.click исполнялся код
"подвешанный" на кнопку тулбара?
/нет, скоприровать код заново во все события менюшки
мне не в лом... но всеж-таки хотелось бы как-нить "по уму"/

сочинил что-то вроде:
Код: Выделить всё
Private Sub mnuItemGipList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuItemGipList.Click
        Dim test As ToolBarButtonClickEventArgs
        test = New ToolBarButtonClickEventArgs(Me.tlbMainWindow.Buttons.Item(2))
        Me.tlbMainWindow.Buttons.Item(2).Pushed = True
        Me.tlbMainWindow_ButtonClick(Me.tlbMainWindow, test)
    End Sub


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

нажатие же команды меню приводит к созданию ноых и новых окон...

СУММИРУЯ весь "плач Ярославны":
КАК СДЕЛАТЬ ТАК, чтобы 2 раза не переписывать код,
а командами меню можно было бы продублировать нажатие кнопок тулбара?

С надеждой уповаю,
Max

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 26.04.2006 (Ср) 11:00

handles :?:

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Сообщение kroskros » 26.04.2006 (Ср) 11:37

---------------------------------------------------------------*
/ремарка в зал/
ага... вот уже и вырисовался стиль ответов
"a'lа Sebas-Великий-И-Ужасный" :twisted:
к добру ли???
---------------------------------------------------------------*

а поподробнее можно?
Если бы я знал КАК и КУДА прикрутить этот handles
в данном случае, я б уже все сделал... :(
Max

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 26.04.2006 (Ср) 12:10

Код: Выделить всё
Private Sub mnuItemGipList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuItemGipList.Click , mnuItemOther.Click
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 26.04.2006 (Ср) 12:18

kroskros
Зря ты на Себаса так, вон он как тебе ответил ;)

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Сообщение kroskros » 26.04.2006 (Ср) 12:35

ага.. не совсем так... мне надо не на ВСЕ команды меню повесить одно и то же, а на click Кнопки и на click Менюшки

эээ.. давайте так:
ВОТ ЧЕГО я уже делал:
к
Код: Выделить всё
Private Sub tlbMainWindow_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles tlbMainWindow.ButtonClick


после Handles tlbMainWindow.ButtonClick
лапоньками дописал: mnuItemGipList.Click

нифига, появляется синяя волнистая и говорит, что
данный метод не может управляться этим событием, ибо оно имеет другую сигнатуру.. :(
Max

baha76
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 07.01.2004 (Ср) 10:59
Откуда: Ташкент

Сообщение baha76 » 26.04.2006 (Ср) 13:40

Выведи код обработки на отдельную приватную процедуру один раз и вызывай ее с любого места любое количество раз.
Вообще-то такие вещи реализуются в виде автомата конечных состояний...

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 26.04.2006 (Ср) 13:50

ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs -> ByVal e As System.EventArgs
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Сообщение kroskros » 26.04.2006 (Ср) 14:09

Ramzes писал(а):kroskros
Зря ты на Себаса так, вон он как тебе ответил ;)


ага... я ВИЖУ :lol: :lol: :lol:

нет... ну серьезно, не то, чтобы я внезапно поглупел,
но и поумнеть так, чтобы ПОНЯТЬ этот ответ я не в силах.. :(
не говорю о том, что в истерике припомнил "->"
из давно мною забытого С++...

я так понял, что надо
ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs
поменять на
ByVal e As System.EventArgs
???
поменял
Код: Выделить всё
Private Sub tlbMainWindow_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tlbMainWindow.ButtonClick


теперь синей волнистой подчеркивает ButtonClick с тем же диагнозом.. :(

туплю? :oops:
Max

baha76
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 07.01.2004 (Ср) 10:59
Откуда: Ташкент

Сообщение baha76 » 28.04.2006 (Пт) 7:17

Вот пример моего случая:
Код: Выделить всё
    Private Sub mnuNew_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs) _
    Handles mnuNew.Click, mnuOpen.Click, mnuDelete.Click, _
    btnNew.Click, btnOpen.Click, btnDelete.Click
        Dim Name As String
        Name = Mid(CType(sender, ToolStripItem).Name, 4)
        Select Case Name
            Case "New"
                Action = Actions.Create
            Case "Open"
                Action = Actions.Open
            Case "Delete"
                Action = Actions.Delete
        End Select
        Call MenuEventsProcessing()
    End Sub

Правда я использовал здесь ToolStripMenuItem и ToolStripButton.
Среда разработки VS2005.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 28.04.2006 (Пт) 9:48

kroskros

Придется тебе таки создавать метод, и вызывать его из обработчиков собтый кнопки и тулбара(или что там у тебя). Пока ничего лучше я не раскопал
baha76
Твой случай проще, у тебя все кнопки

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Сообщение kroskros » 28.04.2006 (Пт) 11:01

Что ж...
пока живу - недеюсь...
если чего расопаете, кидайте сюда, ОК?
я пока канешна выкручусь но все же интересно...

ЗЫ..
ТАК что же имел ввиду Великий-И-Ужасный :wink:
этим самым "->" ??
Max

baha76
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 07.01.2004 (Ср) 10:59
Откуда: Ташкент

Сообщение baha76 » 28.04.2006 (Пт) 14:43

ТАК что же имел ввиду Великий-И-Ужасный
этим самым "->" ??

Замену

baha76
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 07.01.2004 (Ср) 10:59
Откуда: Ташкент

Сообщение baha76 » 28.04.2006 (Пт) 14:44

Совет создать метод и вызыват ее из других мест так давно был дан.
Надо слушать людей.

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

Сообщение Nord777 » 29.04.2006 (Сб) 0:14

Если заменишь ToolBar на ToolStrip сможешь использовать
ToolStripButton1.PerformClick()
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

kroskros
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 01.08.2005 (Пн) 6:59

Сообщение kroskros » 02.05.2006 (Вт) 11:10

Nord777 писал(а):Если заменишь ToolBar на ToolStrip сможешь использовать
ToolStripButton1.PerformClick()


О!!!!!
Спасибо! )))
как легко сделать человека счастливым! ;)
Max


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

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

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

    TopList