MenuItem non selezionato

martedì 11 aprile 2006 - 10.00

Klaus-zanini Profilo | Senior Member

Ciao a tutti
ho utilizzato l'articolo http://www.dotnethell.it/articles/Menu-Immagini-Icone.aspx per creare un mio context menu che appare quando seleziono un elemento di una Listview e clicko con il tasto destro del mouse su di esso.
La cosa strana è che la prima volta che lo faccio se muovo il mouse sul context menù, non viene selezionato nessun item, mentre se cambio elemento della listview o in ogni caso se faccio riapparire il context menu, tutto torna alla normalità.
Quindi il problema si verifica solo alla sua prima apparizione.
Altre informazioni:
- se al posto del mouse uso le freccette della tastiera, tutto va (fino a che non passo sopra il mouse che mi fa perdere di colpo la selezione fatta da tastiera)
- se posiziono il mouse sull'angolo in alto a sinistra del context menu mi seleziona il primo item ma appena lo sposto da lì la selezione scompare.

Qualche idea?


TROVATO!!!


Nell'evento DrawItem associavo una stringa al text del mio menuItem e questo in qualche modo gli dava fastidio!!!
Caspita....mi sembra un bug non indifferente!!!

19018 Profilo | Expert

Ciao, scusa ma solo ora ho visto il post.
Non riesco a riprodurre il bug, a me funziona tutto senza problemi.
Bohh!

Stefano Passatordi

http://blogs.dotnethell.it/stem/

Klaus-zanini Profilo | Senior Member

Hai provato nel drawItem ad assegnare il text al menuItem?

Ad esempio quando così (riprendo il codice dell'articolo)

Private Sub MenuItem1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MenuItem1.DrawItem
e.DrawBackground() '1.
Dim Icn As New Icon(Application.StartupPath & "\icone\SIZEGRIP.ICO") '2.
e.Graphics.DrawIcon(Icn, e.Bounds.X, e.Bounds.Y) '3.
Dim fnt As New Font(Me.Font, FontStyle.Bold) '4
MenuItem1.Text="pippo"
e.Graphics.DrawString(MenuItem1.Text, fnt, Brushes.Black, 20, e.Bounds.Y) '5
Icn.Dispose() '6
fnt.Dispose() '7
End Sub


Questo era il mio problema e ho scoperto che si risolve per l'appunto assegnando fuori il calore del controllo.

19018 Profilo | Expert

Prova a passare direttamente la stringa in questo modo (così come riportato nell'articolo):

e.Graphics.DrawString("Prova menu", fnt, Brushes.Red, 20, e.Bounds.Y)

A me così funziona senza problemi.
Fammi sapere.

Stefano Passatordi

http://blogs.dotnethell.it/stem/

Klaus-zanini Profilo | Senior Member

Sì come è scritto nell'articolo funziona anche a me, ma quello di cui necessitavo è che il nome del menuItem non fosse fisso bensì venisse cambiato a seconda delle necessità (utente inglese o utente italiano...).
Comunque basta assegnare il text fuori da quella funzione e tutto va bene.
Magari se qualcuno si trova nello stesso mio problema ora sa come risolverlo

Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5