【问题标题】:Open Tabs Control打开标签控件
【发布时间】:2013-10-04 17:20:13
【问题描述】:

我正在使用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

现在我需要编写一个代码来添加更多按钮,也应该添加一个代码用于仅当我单击 SubMenu 项时添加按钮(单击时出现新表单)。
而且,我现在应该在预览的 User-Button-Control 中添加一个小 Close 按钮。

【问题讨论】:

  • 您只是在寻找一种自动化按钮创建过程的方法? (添加具有某些属性的按钮和单击事件)?选项卡控件在哪里出现?
  • 是的,我猜。我将其命名为 Tab Control,因为我希望它看起来像 TAB,仅此而已。
  • 那你想依赖tabControl而不是面板?你想要每个标签一个按钮?
  • 我现在用 TableLayoutPanel 代替了 Panel,效果还不错。那是在我单击菜单时添加新按钮,但只有我单击的父菜单项,所以基本上没有发生任何事情,因为这些项目没有调用任何要打开的表单。我需要以某种方式使该 MenuStrip_ItemClicked 事件仅在我单击的菜单项调用某些表单时才显示新的按钮控件。
  • 我写了一个小代码来告诉你如何在运行时处理按钮。了解此代码,您将不会发现任何问题来适应您的确切需求。

标签: vb.net mdi


【解决方案1】:

从您的 cmets 中,我了解到您关于在运行时添加按钮的想法并不太清楚,因此我提供了一个小代码,希望能在这方面对您有所帮助。新建一个项目,在上面放一个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 属性)自动增加,从逻辑上讲,它不会提供你想要的。

【讨论】:

  • 这与我需要的非常接近,但无论如何我都解决了,谢谢你回答@Varocarbas
猜你喜欢
  • 2022-11-18
  • 2015-02-09
  • 2011-12-21
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2017-07-02
相关资源
最近更新 更多