2013-10-04 3 views
0

Я использую MDI container для запуска моего приложения для бизнеса, которое я создал для своего клиента. Поскольку использование MDI означает, что при открытии нескольких форм они все равно будут работать в фоновом режиме все время, пока я не закрою их вручную.Открыть вкладки управления

Мне нужно сделать User Control или что-нибудь еще, что может просмотреть все открытые формы в форме табуляции, чтобы мой клиент мог легко закрыть все или некоторые открытые формы, не закрывая форму, которую он просматривает.

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

Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked 
    Dim Button As New Button 
    Me.Panel5.Controls.Add(Button) 
    Button.Text = e.ClickedItem.Name 
    Button.Width = 50 
    Button.Height = 25 
End Sub 

Теперь мне нужно написать код, чтобы добавить дополнительные кнопки ржали, следует также добавить код для добавления кнопки только тогда, когда я нажимаю на пункт подменю (тот, когда щелкнул новую форму появляются).
И еще, теперь я должен добавить немного кнопки Close в предварительный просмотр User-Button-Control.

+0

Вы ищете только способ автоматизации процесса создания кнопок? (добавить кнопку с определенными свойствами и щелчком)? Где управление вкладками входит во все это? – varocarbas

+0

Да, я думаю. Я назвал его Tab Control, потому что я хочу, чтобы он выглядел как TAB, и ничего больше. – Hoh

+0

Тогда вы хотите полагаться на tabControl, а не на панель? Вам нужна одна кнопка за вкладку? – varocarbas

ответ

1

Из ваших комментариев я понимаю, что ваши идеи относительно добавления кнопок во время выполнения не слишком ясны, и поэтому я включаю небольшой код, который, надеюсь, поможет вам на этом фронте. Начните новый проект и поставить Panel (Panel5) и Button (AddButtons) на нем, и написать этот код:

Dim lastButtonIndex, lastLeft, lastTop As Integer 

Private Sub Button_Click(sender As System.Object, e As System.EventArgs) 

    Dim curButton As Button = DirectCast(sender, Button) 

    If (curButton.Name = "Button1") Then 
     'do Button1 stuff 
    End If 
    'etc. 

End Sub 

Private Sub addNewButton() 

    lastButtonIndex = lastButtonIndex + 1 
    lastLeft = lastLeft + 5 
    lastTop = lastTop + 5 

    Dim Button As New Button 
    With Button 
     .Name = "Button" + lastButtonIndex.ToString() 
     .Text = "Button" + lastButtonIndex.ToString() 
     .Width = 50 
     .Height = 25 
     .Left = lastLeft 
     .Top = lastTop 
     AddHandler .Click, AddressOf Button_Click 
    End With 

    Me.Panel5.Controls.Add(Button) 

End Sub 

Private Sub ButtonAddButtons_Click(sender As System.Object, e As System.EventArgs) Handles AddButtons.Click 
    addNewButton() 
End Sub 

Этот код будет добавить новую кнопку на панели каждый раз при нажатии на AddButtons. Все кнопки будут связаны с Click Event (то же самое для всех): Button_Click. Способ узнать, какая кнопка является текущей в этом методе, - sender, как показано в коде (вы можете установить столько условий, сколько кнопок. Имена даются последовательно начиная с 1, но вы можете взять любое другое свойство в качестве ссылки , curButton - это Button Control).

Имейте в виду, что одной из проблем, о которых вы должны заботиться, является расположение кнопок. Вышеприведенный код имеет очень упрощенные значения X/Y (Left/Top), что автоматически приводит к тому, что вы хотите.

+0

Это то, что очень близко к тому, что мне нужно, но в любом случае я решил это, спасибо за ответ @Varocarbas – Hoh

+0

@Nidzaaaa приветствую вас. – varocarbas

Смежные вопросы