Avatar billede funkyloonie Nybegynder
12. september 2002 - 09:58 Der er 13 kommentarer og
3 løsninger

Fange rightclick i menu

Hvordan finder jeg ud af om det er den højremuseknap eller venstre som er klikket på i menuen?
Avatar billede z42cool Nybegynder
12. september 2002 - 10:21 #1
Det kan du ikke! Event handleren Click modtager "kun" en System.EventArgs og den fortæller ikke noget om dette!
Avatar billede jakobandersen Nybegynder
12. september 2002 - 10:44 #2
Det kan man da godt hvis det er MouseEventArgs:

http://www.syncfusion.com/faq/winforms/search/731.asp
Avatar billede z42cool Nybegynder
12. september 2002 - 12:21 #3
moonduck>> Ja, men det er det er det ikke. MenuItems Click event er specificeret som Click(object sender, System.EventArgs e)
Avatar billede simon.ulsnes Nybegynder
12. september 2002 - 13:40 #4
Du bruger bare event'en MouseDown i stedet.

protected override void MenuItem_OnMouseDown(object sender, MouseEventArgs e)
{
  ...
}

// Simon
// This sentence no verb.
Avatar billede simon.ulsnes Nybegynder
12. september 2002 - 13:41 #5
moonduck >> OnClick sender ikke MouseEventArgs, kun EventArgs...
Avatar billede funkyloonie Nybegynder
12. september 2002 - 14:00 #6
Jeg har forsøgt en del og er glad for hjælpen. Jeg har dog ikk fundet en løsning endnu. Det er i vb .net jeg koder. Jeg kan ikke rigtig få en mouse event knyttet til mine menuitems.
Avatar billede z42cool Nybegynder
12. september 2002 - 14:01 #7
simon.ulsnes>> Min version af frameworkets MenuItem klasse har ikke et MouseDown event :-(
Avatar billede simon.ulsnes Nybegynder
12. september 2002 - 15:14 #8
OK, jeg har også kigget lidt på det, og fundet ud af at du bliver nødt til at implementere det selv i MenuItem, ved at lave en ny klasse der arver fra MenuItem. Du kan selvfølgelig også skrive din egen som arver fra klassen Control, det er faktisk nok i virkeligheden nemmere.

// Simon
Avatar billede funkyloonie Nybegynder
12. september 2002 - 16:44 #9
ok.
Jeg tænkte på om nedenstående sætning kan bruges på en klasse der arver fra MenuItem? Er der en som ligger inde med et eksempel på hvordan jeg kan kode en klasse som vil reagere på mouseevents?

mitmenuitem += new System.windows.forms.MouseEventHandler(Me.MouseHandler)
Avatar billede funkyloonie Nybegynder
12. september 2002 - 16:49 #10
Jeg har ikke noget materiale som jeg kan bruge til events. Evt links til gode steder på nettet vil jeg blive glad for.
Avatar billede z42cool Nybegynder
12. september 2002 - 20:06 #11
simon.ulsnes>> At arve Control er ikke en mulighed, i hvert fald ikke hvis man ønsker at anvende den i sammenhæng med MainMenu eller ContextMenu da disse jo i sagens natur forventer MenuItems eller nedarvede klasser som child kontroller!
Avatar billede simon.ulsnes Nybegynder
12. september 2002 - 21:05 #12
Det er altså ikke så svært at skrive MainMenu eller ContextMenu om...
Avatar billede z42cool Nybegynder
12. september 2002 - 22:46 #13
simon.ulsnes>> Men hvis du f.eks. skriver ContextMenu om så den arver Control, så kan du ikke længere tildele den til alle kontrollernes ContextMenu property og så skal du pludselig også skrive alle de andre kontroller om :-)
Avatar billede simon.ulsnes Nybegynder
12. september 2002 - 22:54 #14
Det problem kan ofte løses via casting. Nu kender jeg ikke syntaksen i VB.NET, men i C#:
(MenuItem)DinControl;

// Simon
Avatar billede z42cool Nybegynder
13. september 2002 - 08:58 #15
Du kan da ALDRIG få kompileren til at acceptere et cast som følgende:

public class DinControl : Control
{
  //bla, bla
}

DinControl minControl = new DinControl();
//Dette cast kan IKKE kompilere
MenuItem menuItem = (MenuItem)minControl;
Avatar billede funkyloonie Nybegynder
13. september 2002 - 09:53 #16
Jeg er blevet lidt klogere men har ikke fået løst mit problem.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester