[C#] (e.Button & MouseButtons.Left) == MouseButtons.Left ?

Pagina: 1
Acties:
  • 414 views sinds 30-01-2008
  • Reageer

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
In tal van voorbeelden op internet zie je om te testen welke muisknop ingedrukt is staan:

C#:
1
2
if ((e.Button & MouseButtons.Left) == MouseButtons.Left) 
     this.Foo();


Nu vraag ik me af of er ook effectief verschil is tussen bovenstaande en

C#:
1
2
if ((e.Button  == MouseButtons.Left) 
     this.Bar();


:?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

De & is een bitwise AND en geen logische (of booleaanse) AND.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
Dat weet ik, maar waarom gebruiken de programma's op de meeste sites de eerste manier en niet de tweede manier? Is er ook effectief verschil?

Verwijderd

De eerste manier is als de linkermuisknop is ingedrukt.
De tweede manier is als alleen de linkermuisknop is ingedrukt.

Snappie?

  • __fred__
  • Registratie: November 2001
  • Laatst online: 29-11 20:34
Ja.

Want als e.Button = MouseButtons.Left | MouseButtons.Right

dan:


(e.Button & MouseButtons.Left) == MouseButtons.Left levert true op

en

e.Button == MouseButtons.Left levert false op.

[ Voor 0% gewijzigd door __fred__ op 22-08-2007 14:58 . Reden: spuit elf ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Mastermind schreef op woensdag 22 augustus 2007 @ 14:54:
Dat weet ik, maar waarom gebruiken de programma's op de meeste sites de eerste manier en niet de tweede manier? Is er ook effectief verschil?
Druk maar eens twee knoppen tegelijkertijd in ;)

Edit: Wat TRRoads zegt dus..

[ Voor 4% gewijzigd door Creepy op 22-08-2007 14:59 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
Ok thanks, dan gebruik ik de tweede manier.

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Volgens mij bevat e.button de integer waarde van de button event op dat moment. Dit is uit te drukken in een bitsequence en deze wordt gebitmasked (AND) tegenover de bitsequence van MouseButtons.Left. Hierbij test je of elke bit in de sequence op een positie i, voor beide sequenties 1 (HOOG) is op i. Dit houdt in dat je vooral wil testen dus of de linkermuisknop iig is ingedrukt. Print e.button maar eens met radix 2, en varieer met linkermuisknop, rechtermuisknop en beiden.
Pagina: 1