Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#/.NET] DoubleClick event op item in ListBox

Pagina: 1
Acties:

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 17:54

Haan

dotnetter

Topicstarter
Ik wil dus een doubleclick event aan een item in een ListBox hangen. Deze kan echter alleen op de ListBox zelf, dus moet je daar wat op verzinnen.

Na wat research zou je met deze code (volgens verschillende sites en MSDN) het voorelkaar moeten krijgen':
C#:
1
2
3
4
5
6
7
8
Point pt = new Point(Cursor.Position); //haal X en Y van cursor op
pt = listBox1.PointToClient(pt); //zet X en Y naar positie in applicatie

//deze methode zou een getal > 0 moeten geven als er op een item is geklikt en anders -1
int index = listBox1.IndexFromPoint(pt); 

//hierna doe (if index > 0) de code die je wil uitvoeren (je weet dan dat er op een item is gedubbelklikt 
//en niet op een lege plek in de ListBox


Het probleem is dus dat ik altijd -1 krijg, waar ik ook klik in de ListBox ;( Dus er gaat iets niet goed met die IndexFromPoint, maar ik kom er niet uit wat het is, ik heb ook niet echt kunnen vinden hoe die methode precies werkt.

Kater? Eerst water, de rest komt later


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 20:22
Ik weet niet of je in VS werkt of gewoon in een text editor, maar
C#:
1
Point pt = new Point(Cursor.Position);

kan niet, build niet eens Point heeft geen constructor met als parameter een Point (Cursor.Position is een Point namelijk. Als ik
C#:
1
pt = listBox1.PointToClient(Cursor.Position);

gebruik werkt het hier prima.

Roomba E5 te koop


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Wordt het item wat je dubbelclicked in de lijst niet ook automatisch geselecteerd? Want dan kun je bij het afvangen van de doubleclick gewoon ListBox.SelectedItem gebruiken.

Vervolgens kun je daarna het doubleclick event op het geselecteerde item invoken.

[ Voor 19% gewijzigd door Niemand_Anders op 20-03-2008 12:06 ]

If it isn't broken, fix it until it is..


  • Haan
  • Registratie: Februari 2004
  • Laatst online: 17:54

Haan

dotnetter

Topicstarter
sig69 schreef op donderdag 20 maart 2008 @ 11:46:
Ik weet niet of je in VS werkt of gewoon in een text editor, maar
C#:
1
Point pt = new Point(Cursor.Position);

kan niet, build niet eens Point heeft geen constructor met als parameter een Point (Cursor.Position is een Point namelijk. Als ik
C#:
1
pt = listBox1.PointToClient(Cursor.Position);

gebruik werkt het hier prima.
Ik had het even uitelkaar getrokken om duidelijker te maken wat er gebeurt, het zou inderdaad Point pt = Cursor.Point moeten zijn. Maar ik doe inderdaad zelf ook in een keer pt = listBox1.PointToClient(Cursor.Position).
Niemand_Anders schreef op donderdag 20 maart 2008 @ 11:59:
Wordt het item wat je dubbelclicked in de lijst niet ook automatisch geselecteerd? Want dan kun je bij het afvangen van de doubleclick gewoon ListBox.SelectedItem gebruiken.

Vervolgens kun je daarna het doubleclick event op het geselecteerde item invoken.
Dat was net even wat ik nodig had :*) Ik zat ermee dat als je in een lege plek op de ListBox klikt, er niets zou moeten gebeuren. Met een check of SelectedItem niet null is, vang je dat op.
Daarna nog even ClearSelected na het verwerken van het event en het is helemaal af :)

Kater? Eerst water, de rest komt later