打开标签控件

时间:2013-10-04 08:11:10

标签: vb.net mdi

我正在使用MDI container来运行我为我的客户创建的业务应用程序。 由于使用MDI意味着当我打开多个表单时,它们仍会一直在后台运行,直到我手动关闭它们。

我需要的是制作User Control或其他任何可以预览Tab表格中所有已打开表单的内容,这样我的客户就可以轻松关闭所有或部分已打开的表单,而无需关闭他正在查看的表单。

现在我已经使用了这段代码,所以现在只有菜单中的第一个点击项目显示为按钮,而其他菜单项目则没有。

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

现在我需要编写一个代码来添加更多按钮,只有当我点击SubMenu项目时才会添加一个代码来添加按钮(点击新表格时出现的那个)。
此外,我现在应该在预览的用户按钮控件中添加一个Close按钮。

1 个答案:

答案 0 :(得分: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属性)自动增加,从逻辑上讲,它不会提供你想要的东西。