[VB.NET] dynamisch contextmenu

Pagina: 1
Acties:

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21
Ik heb een contextmenu welke dynamisch word opgebouwd, aan de hand van een aantal voorwaarden.
Dat is op zich geen probleem.
Nu wil ik alleen de contextmenu item.click afhandelen.

Normaal gesproken is dit een nummering, maar aangezien mijn menu dynamisch is, dus verschillende hoeveelheden items kan bevatten werkt dit niet.

Het enige wat ik erover kan vinden is dit:
http://www.dotnet247.com/247reference/msgs/2/14267.aspx

Maar op een of andere manier krijg ik dat niet aan de praat.
Hij doorloopt de hele "protected sub menuclick" niet.

Iemand enig idee hoe ik een click kan afvangen van een contextmenu en deze verder kan verwerken ?

The best thing about UDP jokes is that I don't care if you get them or not.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 26-05 17:50

gorgi_19

Kruimeltjes zijn weer op :9

Wat heb je dan als code?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21
Menu item maken:
code:
1
 ContextMenu1.MenuItems.Add("test")

Ik heb verschillende dingen geprobeerd:
code:
1
2
3
4
5
6
7
8
9
10
11
 Private Sub ContextMenu1_Popup(ByVal sender As Object, ByVal e As System.EventArgs) Handles ContextMenu1.Popup
        Dim menuitem As ContextMenu.MenuItemCollection
        Select Case CType(sender, MenuItem).Text             
            Case "test"
                MessageBox.Show("test")
            Case "Afsluiten"
                MessageBox.Show("afsluiten")
            Case Else
                MessageBox.Show("bla")
        End Select
    End Sub

en ook nog
code:
1
2
3
4
5
6
7
8
9
10
Protected Sub MenuClick(ByVal sender As Object, ByVal e As EventArgs)
        Select Case CType(sender, MenuItem).Text
            Case "test"
                MessageBox.Show("test")
            Case "Afsluiten"
                MessageBox.Show("afsluiten")
            Case Else
                MessageBox.Show("bla")
        End Select
    End Sub

En deze, maar dan krijg ik niet de juiste waarde retour
code:
1
2
3
   Private Sub MenuSelect(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem.clicked
'code die ik weer had gedelete.... 
    End Sub

Of zit ik er nou gigantisch overheen te kijken :?

[ Voor 16% gewijzigd door Remco op 08-04-2004 20:32 ]

The best thing about UDP jokes is that I don't care if you get them or not.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 26-05 17:50

gorgi_19

Kruimeltjes zijn weer op :9

http://msdn.microsoft.com...rmsmenuitemclasstopic.asp

Kijk eens goed naar de constructor; je mist de eventhandler.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Ik zie ook nergens een event-handler die de onclick van het menu-item afvangt?


code:
1
2
3
MenuItem mnuBlaat = new MenuItem("blaat");
mnuBlaat.Click += new EventHandler (OnBlaatClick);
aMenu.MenuItems.Add (mnuBlaat);

https://fgheysels.github.io/


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21
Perfect !!
Een hoop, maar nuttig leeswerk geweest over die event-handlers.
Ben er nog niet helemaal uit krijg nog een System.InvalidCastException op
code:
1
   Select Case CType(sender, MenuItem).Text

Maar dat fruts ik er dit weekend wel weer uit.

The best thing about UDP jokes is that I don't care if you get them or not.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Als sender niet van het type MenuItem is, dan zal je een cast exception krijgen idd.

In C# kan je 't ook zo doen:
code:
1
2
3
4
MenuItem mi = sender as MenuItem;
if( mi != null )
{
}


of
code:
1
2
3
4
if( sender is MenuItem )
{
     ((MenuItem)sender).Text ...
}

https://fgheysels.github.io/

Pagina: 1