我有一个程序,允许您打开应用程序本身的其他Forms
。
这些Forms
中的每一个都可以通过PictureBox
打开,并且具有自定义标题栏,它们具有一个自定义按钮,可让您最小化它们。
您可以在每个窗口中打开多个窗口。
在最小化这些Windows之一时,会将UserControl
添加到具有自定义背景图片的FlowLayoutPanel
,并将Label
添加到最小化Window的文本中。
如果还有更多打开的窗口,也许标题相同,如何显示特定的窗口?
答案 0 :(得分:1)
包含最小化窗口文本的标签标签可以包含对表单的引用。 由于标签是根据表单上的代码创建的,因此需要最小化...
NewLable.Tag = Me
然后,当您想重新显示表单时
Private Sub SomeLabel_Click(sender as object, e as EventArgs) Handles SomeLabel.Click
Dim frm as Form
Dim lbl as Lable = CType(sender, Label)
frm = CType(lbl.Tag, Form)
frm.Show
End Sub
未经测试-只是一个主意
答案 1 :(得分:1)
这是一个简化的示例
使用三个表单(Form1,Form2,Form3)制作一个新项目,并创建启动对象Form3。在Form3上,添加FlowLayoutPanel1,然后添加Button1和Button2。
为此在Form3中进行编码。其他形式可以为空白。
Public Class Form3
Private forms As New List(Of Form)()
Private Sub addNewForm(form As Form)
forms.Add(form)
Dim b As New Button With {.Text = form.Text, .Visible = False}
AddHandler b.Click, Sub() form.WindowState = FormWindowState.Normal
AddHandler form.Resize, Sub() b.Visible = (form.WindowState = FormWindowState.Minimized)
Me.FlowLayoutPanel1.Controls.Add(b)
form.Show()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
addNewForm(New Form1)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
addNewForm(New Form2)
End Sub
End Class
我认为关键是为添加到FlowLayoutPanel的每个按钮(对应于每个创建的表单)添加一个处理程序。这样,您无需尝试跟踪表单,因为按钮处理程序是在表单仍处于上下文中时创建的。
您可以将按钮更改为UserControl或其他任何按钮,但概念将相同。