Piu' di cosi non so come fare.
Ho fatto una fatica boia a scrivere ste 4 righe di codice.
Programmo in C++ e C#: il VB e' solo un lontanissimissimo ricordo.
- Clicchi quanto vuoi sul pulsante Form1 e ti si aprono delle finestre chiamate form1
- Clicchi su form 2 e ti si aprono le finestra form2.
- Clicchi su una voce di menu e la relativa finestra viene attivata.
- A menu ti ritrovi l'elenco delle finestra aperte.
- Clicchi su closeall e tutte le finestre si chiudono.
codice:
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
InitializeComponent()
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private components As System.ComponentModel.IContainer
Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Button2 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.MainMenu1 = New System.Windows.Forms.MainMenu
Me.MenuItem1 = New System.Windows.Forms.MenuItem
Me.MenuItem2 = New System.Windows.Forms.MenuItem
Me.Button1 = New System.Windows.Forms.Button
Me.Button2 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'MainMenu1
'
Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem1})
'
'MenuItem1
'
Me.MenuItem1.Index = 0
Me.MenuItem1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem2})
Me.MenuItem1.Text = "Windows"
'
'MenuItem2
'
Me.MenuItem2.Index = 0
Me.MenuItem2.Text = "Close All"
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(16, 16)
Me.Button1.Name = "Button1"
Me.Button1.TabIndex = 0
Me.Button1.Text = "Button1"
'
'Button2
'
Me.Button2.Location = New System.Drawing.Point(16, 48)
Me.Button2.Name = "Button2"
Me.Button2.TabIndex = 1
Me.Button2.Text = "Button2"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Menu = Me.MainMenu1
Me.Name = "Form1"
Me.Text = "ProvaMenu"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
OpenForm("Form1")
End Sub
Private Sub OpenForm(ByVal formname As String)
Dim frm As Form = New Form
frm.Text = formname
frm.Show()
AddHandler frm.Closing, AddressOf Forms_Closing
Dim menuItem As FormMenuItem = New FormMenuItem
menuItem.Text = formname
menuItem.myform = frm
AddHandler menuItem.Click, AddressOf MenuItem_Click
MenuItem1.MenuItems.Add(menuItem)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
OpenForm("Form2")
End Sub
Private Sub Forms_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
For I As Integer = 1 To MenuItem1.MenuItems.Count - 1
Dim mni As FormMenuItem = MenuItem1.MenuItems(I)
If mni.myForm Is CType(sender, Form) Then
MenuItem1.MenuItems.RemoveAt(I)
Exit Sub
End If
Next
End Sub
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim mni As FormMenuItem = CType(sender, FormMenuItem)
mni.myForm.Activate()
End Sub
Private Sub MenuItem2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
For i As Integer = MenuItem1.MenuItems.Count - 1 To 1 Step -1
Dim mni As FormMenuItem = MenuItem1.MenuItems(i)
mni.myForm.Close()
Next
End Sub
End Class
Public Class FormMenuItem
Inherits System.Windows.Forms.MenuItem
Public myForm As System.Windows.Forms.Form
End Class