我正在使用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
按钮。
答案 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
属性)自动增加,从逻辑上讲,它不会提供你想要的东西。