Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Creare/aggiungere sottomenu in runtime
Forum - Visual Basic 6 - Creare/aggiungere sottomenu in runtime

Avatar
1/2copiatore (Normal User)
Newbie


Messaggi: 7
Iscritto: 05/10/2019

Segnala al moderatore
Postato alle 9:30
Mercoledì, 09/10/2019
Buongiorno a tutti

eccomi qui con il primo problema, creare un sottomenu con gli anni dal 1999 ad oggi, ed è evidente che deve essere creato in runtime in quanto ogni anno deve essere incrementato di un item, questo è quanto ho scritto:

Codice sorgente - presumibilmente VB.NET

  1. ' crea il sottomenu anni e carica la lstAnni
  2.         For x As Integer = 1997 To Year(Now)
  3.             Dim Intercetta As New ToolStripMenuItem
  4.             Select Case x
  5.                 Case 1997
  6.                     Intercetta.Text = "Tutti"
  7.                     mnu_SeekAnno.DropDownItems.Add(Intercetta.Text)
  8.                     AddHandler Intercetta.Click, AddressOf Intercetta_Click
  9.                 Case 1998
  10.                     Intercetta.Text = "Nessuno"
  11.                     mnu_SeekAnno.DropDownItems.Add(Intercetta.Text)
  12.                     AddHandler Intercetta.Click, AddressOf Intercetta_Click
  13.                     mnu_SeekAnno.DropDownItems.Add("-")
  14.                 Case Else
  15.                     'aggiunge sottomenu
  16.                     Intercetta.Text = x
  17.                     mnu_SeekAnno.DropDownItems.Add(Intercetta.Text)
  18.                     AddHandler Intercetta.Click, AddressOf Intercetta_Click
  19.                     'aggiunge nella listbox anni
  20.                     lstAnni.Items.Add(x)
  21.             End Select
  22.         Next
  23.  
  24.     Private Sub Intercetta_Click(ByVal sender As Object, ByVal e As EventArgs)
  25.         Dim mnu As ToolStripMenuItem
  26.         mnu = DirectCast(sender, ToolStripMenuItem)
  27.         If mnu.Text = "Nessuno" Then
  28.             mnu_SeekAnno.Text = "Anno ..."
  29.         Else
  30.             mnu_SeekAnno.Text = "Anno : " & mnu.Text
  31.         End If
  32.     End Sub



il tutto funziona ( quasi ), il sottomenu è creato e definito l' handler, quello che non va è l'intercettazione del click a un x item del sotto menu creato.
Ho inserito un 'punto d'interruzione' nella procedura Intercetta_click ma lì non ci arrivo.

Dove sto sbagliando?



Ultima modifica effettuata da 1/2copiatore il 09/10/2019 alle 9:50
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 281
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 13:04
Mercoledì, 09/10/2019
Premessa: Non ho mai usato VB, ma ad una veloce occhiata vedo che tu fai un add di una stringa non di un oggetto, altra cosa, non conoscendo VB non so come si comporta, aggiungi l'evento "onClick" dopo aver aggiunto  l'item al submenu.
Io farei così:
Codice sorgente - presumibilmente Visual Basic 6

  1. Intercetta.Text = "Nessuno"
  2.   AddHandler Intercetta.Click, AddressOf Intercetta_Click
  3.   mnu_SeekAnno.DropDownItems.Add(Intercetta)
  4.  .....


G.


Ibis et redibis non morieris in bello
PM Quote
Avatar
1/2copiatore (Normal User)
Newbie


Messaggi: 7
Iscritto: 05/10/2019

Segnala al moderatore
Postato alle 14:42
Mercoledì, 09/10/2019
Testo quotato

Postato originariamente da Goblin:

Premessa: Non ho mai usato VB, ma ad una veloce occhiata vedo che tu fai un add di una stringa non di un oggetto, altra cosa, non conoscendo VB non so come si comporta, aggiungi l'evento "onClick" dopo aver aggiunto  l'item al submenu.
Io farei così:
Codice sorgente - presumibilmente Visual Basic 6

  1. Intercetta.Text = "Nessuno"
  2.   AddHandler Intercetta.Click, AddressOf Intercetta_Click
  3.   mnu_SeekAnno.DropDownItems.Add(Intercetta)
  4.  .....


G.



Ciao goblin

era come dicevi ... aggiungevo la stringa, è bastato togliere quel ".Text" e tutto è andato bene

Grazie

PM Quote