VB.NET e MenuStrip

  • Creatore Discussione Creatore Discussione mythar
  • Data di inizio Data di inizio

mythar

Utente Attivo
16 Gen 2006
148
0
0
46
Naples
Ciao a tutti

ho l'esigenza di caricare un menu leggendone i parametri da una tabella.

Sono riuscito a caricare il menu padre, ma non riesco a caricare i menu figli. Come devo fare?

Postatemi un pò di codice, vi prego.
 
Id, NomeMenu, MenuPadre, Azienda

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:
 
Tabella Menu
Id(Chiave della tabella)
NomeMenu
IdPadre(Corrisponde all'id del menu padre)

Se Id = IdPadre allora il menu è padre
Se Id <> IdPadre allora il menu è figlio

La tabella è una sola

Ho ordinato i campi per IdPadre

Spero di essere stato chiaro questa volta.

Byez:byebye:Byez
 
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??)

Fammi sapere
 
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.

PS: vi posto il codice al più presto
 
In allegato c'è tutto il codice necessario per creare dinamicamente il menù dell'applicazione usando il MenuStrip di VB 2005

Usatelo che funziona bene

:fonzie:
 

Allegati

Discussioni simili