RaouL_BennetH
03-07-2008, 14:07
Ciao a tutti :)
Dato che mi scoccio tantissimo a disegnare ogni volta su un form un menu, che in pratica è lo stesso per tutti i form, ho fatto una piccola classe:
Public Class ClassMenu
Dim runTimeMenu As ToolStrip
Dim addButton As ToolStripButton
Dim saveButton As ToolStripButton
Dim cancelButton As ToolStripButton
Dim prepareUpdateButton As ToolStripButton
Dim updateButton As ToolStripButton
Dim deleteButton As ToolStripButton
Dim closeButton As ToolStripButton
Dim separator As ToolStripSeparator
Public Sub InitializeToolStrip(ByVal tContainer As ToolStripPanel)
addButton = New ToolStripButton
With addButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Nuovo"
End With
saveButton = New ToolStripButton
With saveButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Salva"
End With
cancelButton = New ToolStripButton
With cancelButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Annulla"
End With
prepareUpdateButton = New ToolStripButton
With prepareUpdateButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Modifica"
End With
updateButton = New ToolStripButton
With updateButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Aggiorna"
End With
deleteButton = New ToolStripButton
With deleteButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Elimina"
End With
closeButton = New ToolStripButton
With closeButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Esci"
End With
runTimeMenu = New ToolStrip
With runTimeMenu
.Dock = DockStyle.Top
.BackColor = Color.Transparent
.Font = New Font("Verdana", 8, FontStyle.Regular)
.Items.Insert(0, addButton)
separator = New ToolStripSeparator
.Items.Insert(1, separator)
.Items.Insert(2, saveButton)
separator = New ToolStripSeparator
.Items.Insert(3, separator)
separator = New ToolStripSeparator
.Items.Insert(4, cancelButton)
separator = New ToolStripSeparator
.Items.Insert(5, separator)
.Items.Insert(6, prepareUpdateButton)
separator = New ToolStripSeparator
.Items.Insert(7, separator)
.Items.Insert(8, updateButton)
separator = New ToolStripSeparator
.Items.Insert(9, separator)
.Items.Insert(10, deleteButton)
separator = New ToolStripSeparator
.Items.Insert(11, separator)
.Items.Insert(12, closeButton)
.GripStyle = ToolStripGripStyle.Hidden
End With
tContainer.Controls.Add(runTimeMenu)
End Sub
con questa piccola classe, riesco a piazzare al volo su qualsiasi form il mio semplice menu. Il problema che ho invece è gestire gli eventi all'interno del form sul quale lo piazzo... in pratica dovrei fare:
addhandler nomebottone.Click, addressof nomebottone_Click
Ma il fatto è che ovviamente sul form, per ricavare indice e nome dei bottoni devo fare vari cicli, if etc..
Se invece volessi aggiungerli direttamente nella classe, non riesco a capire in che modo potrei far fare agli eventi quello che vorrei.
Per esempio, per il bottone di chiusura, dovrei fare:
addhandler closeButton.Click, addressof closeButton_Click
sub closeButton_Click(Byval sender as Object, byval e as EventArgs)
formDoveStaPiazzatoIlBottone.Close()
end sub
Come potrei fare?
Dato che mi scoccio tantissimo a disegnare ogni volta su un form un menu, che in pratica è lo stesso per tutti i form, ho fatto una piccola classe:
Public Class ClassMenu
Dim runTimeMenu As ToolStrip
Dim addButton As ToolStripButton
Dim saveButton As ToolStripButton
Dim cancelButton As ToolStripButton
Dim prepareUpdateButton As ToolStripButton
Dim updateButton As ToolStripButton
Dim deleteButton As ToolStripButton
Dim closeButton As ToolStripButton
Dim separator As ToolStripSeparator
Public Sub InitializeToolStrip(ByVal tContainer As ToolStripPanel)
addButton = New ToolStripButton
With addButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Nuovo"
End With
saveButton = New ToolStripButton
With saveButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Salva"
End With
cancelButton = New ToolStripButton
With cancelButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Annulla"
End With
prepareUpdateButton = New ToolStripButton
With prepareUpdateButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Modifica"
End With
updateButton = New ToolStripButton
With updateButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Aggiorna"
End With
deleteButton = New ToolStripButton
With deleteButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Elimina"
End With
closeButton = New ToolStripButton
With closeButton
.DisplayStyle = ToolStripItemDisplayStyle.Text
.ForeColor = Color.White
.Text = "Esci"
End With
runTimeMenu = New ToolStrip
With runTimeMenu
.Dock = DockStyle.Top
.BackColor = Color.Transparent
.Font = New Font("Verdana", 8, FontStyle.Regular)
.Items.Insert(0, addButton)
separator = New ToolStripSeparator
.Items.Insert(1, separator)
.Items.Insert(2, saveButton)
separator = New ToolStripSeparator
.Items.Insert(3, separator)
separator = New ToolStripSeparator
.Items.Insert(4, cancelButton)
separator = New ToolStripSeparator
.Items.Insert(5, separator)
.Items.Insert(6, prepareUpdateButton)
separator = New ToolStripSeparator
.Items.Insert(7, separator)
.Items.Insert(8, updateButton)
separator = New ToolStripSeparator
.Items.Insert(9, separator)
.Items.Insert(10, deleteButton)
separator = New ToolStripSeparator
.Items.Insert(11, separator)
.Items.Insert(12, closeButton)
.GripStyle = ToolStripGripStyle.Hidden
End With
tContainer.Controls.Add(runTimeMenu)
End Sub
con questa piccola classe, riesco a piazzare al volo su qualsiasi form il mio semplice menu. Il problema che ho invece è gestire gli eventi all'interno del form sul quale lo piazzo... in pratica dovrei fare:
addhandler nomebottone.Click, addressof nomebottone_Click
Ma il fatto è che ovviamente sul form, per ricavare indice e nome dei bottoni devo fare vari cicli, if etc..
Se invece volessi aggiungerli direttamente nella classe, non riesco a capire in che modo potrei far fare agli eventi quello che vorrei.
Per esempio, per il bottone di chiusura, dovrei fare:
addhandler closeButton.Click, addressof closeButton_Click
sub closeButton_Click(Byval sender as Object, byval e as EventArgs)
formDoveStaPiazzatoIlBottone.Close()
end sub
Come potrei fare?