Uso un filtro sull'Azienda per la selezione del menu che mi interessa.
Se MenuPadre=ID allora il menu va sulla tabstrip orizontale, altrimenti va su quella verticale.
Con questo primo codice esegue 2 volte il reader.read ad ogni ciclo, quindi mi crea i figli, ma salta i padri, e alla fine va in errore
While reader.Read
Dim padre As New ToolStripMenuItem()
If reader(2).ToString = reader(0).ToString Then
Me.MainMenu.Items.AddRange(New System.Windows.Forms.ToolStripItem() {padre})
padre.Name = reader(1).ToString
padre.Text = reader(1).ToString
While reader.Read And reader(2).ToString <> reader(0).ToString
Dim figlio As New ToolStripMenuItem()
padre.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {figlio})
figlio.Name = reader(1).ToString
figlio.Text = reader(1).ToString
End While
End If
End While
Con questo secondo codice istanzia un oggetto padre ad ogni ciclo, quindi mi ritrovo solo le testate dei padri, perchè i figli li associa a padroni che non vengono valorizzati.
While reader.Read
Dim padre As New ToolStripMenuItem()'Istanzio padre
If reader(2).ToString = reader(0).ToString Then
Me.MainMenu.Items.AddRange(New System.Windows.Forms.ToolStripItem() {padre})
'Valorizzo il padre, altrimenti non è visibile
padre.Name = reader(1).ToString
padre.Text = reader(1).ToString
Else
Dim figlio As New ToolStripMenuItem()
padre.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {figlio})
figlio.Name = reader(1).ToString
figlio.Text = reader(1).ToString
End If
End While
Spero che questo ti sia di aiuto a capire il mio problema.
:crying: Aiuto :crying:
Select Id, NomeMenu, IdPadre From Menu ORDER BY IdPadre, Id
Ho pensato di creare una funzione ricorsiva perchè potrei avere la necesstà di caricare, oltre a menu padre e menu figli, anche i sottomenu dei figli(??nipoti??)
Ho risolto il problema, ma senza usare il menustrip di vb.net.
Se qualcuno sa come fare la stessa cosa con il menustrip mi farebbe piacere sapere come ha fatto.