C# event Doppelklick auf EINTRAG in einer Listbox

Murphy9904

Lt. Junior Grade
Registriert
Mai 2007
Beiträge
344
Hi,
Ich will dass ein event ausgelöst wird wenn man auf meiner listbox einen Doppelklick auf einen eintrag macht.

--> MouseDoubleClick ist das einzigste was es da in der Art gibt.

aber wenn man jetzt schnell scrollt (also oft klickt) wird das Event auch ausgelöst. was aber in dem Fall dann nicht sein soll

Kann ich das irgendwie abfangen dass die Maus über einem Objekt sein muss?

Danke schonmal

LG Murphy
 
Naja für ein Home Projekt wär das in ordnung.
aber es muss doch irgendwie anders gehn
 
Puh, ich glaub´ da hast du keine Chance.
Du kannst die Scrollbalken ja deaktivieren und Buttons bei der Listbox platzieren zum Scrollen. Ich glaube diesen Scrollfortschritt kann man auslagern. Oder halt gleich mit einem extra Regler.

Aber mit der ersten Methode bist du einfach am Besten beraten.

EDIT:
Ansonsten kannst du die Scrollposition bei jedem Einzelklick zwischenspeichern und halt beim Doppelklickevent vergleichen.

Ein spezielles Event für das Problem finde ich jetzt nicht:
http://msdn.microsoft.com/de-de/library/system.windows.forms.listbox_events.aspx
 
Zuletzt bearbeitet:
du kannst im event prüfen, ob ein item selektiert ist und nur dann den doppelklick bezogen auf das item handlen, ansonsten machst du einfach nichts, sprich beim doppelklick auf den scrollbalken!
 
ein Extra scrollbalken is ja auch nciht schön.
ja bisher hab ichs ja auch so gemacht dass er das event nur aufruft wenn ein Objekt selektiert ist.
aber man kann ja auch Selektieren und dann auf die Idee kommen zu scrollen.
 
Murphy9904 schrieb:
aber man kann ja auch Selektieren und dann auf die Idee kommen zu scrollen.

Jo, das ist ja das Hauptproblem.
Deswegen sind deine Möglichkeiten ja so limitiert. Überprüfe einfach immer die Mausposition und fertig. Dann weißt du Bescheid. Eine schon implementierte Funktion hätte dieselbe Funktionsweise.
 
Das darf ich aber so nicht machen.
das ist ein rumgewurschtel weil der Scrollbalken nich da is
da muss ich ja erst ausrechnen wieviele Objekte Platz haben mit der Schriftgröße und und und...
 
Relativ einfach.
In deiner Listbox liegen ja sicherlich irgendwelche Objekte eines Types oder so, sei es string oder was eigenes.

Wenn du nun dein MouseDoubleklicl event fängst, machst du einen "As-Cast" auf die Klasse die die Objekte für deine Listbox bereitstellt (ListBox.SelectedItem as string oder irgendwas) und wenn bei diesem Null rauskommt, dann sollte das geklickte Item KEIN Element sein was du erwarten tuest.
 
@toeffi: Das geht ja nicht, weil ein bereits selektiertes Item beim Klicken auf den Scrollbalken auch selektiert bleibt.

@grueni: Scheiße, hab´ ich nicht gesehen. -.-
 
versteh ich nich?
das Objekt is ja trotzem ausgewählt. - auch wenn man scrollt
 
Achso, so meint er das mit dem Scrollen.
Wundert mich aber das die Listbox da so ein Verhalten zeigt, naja nich sauber implementiert.
Dann ist die Lösung von grünel wohl doch am sichersten.
 
soweit ich das gesehn hab is das vom grüntel ja auch Pixel zählen. (das will ich ja nich)
vllt kann ichs ja so machen dass ich überprüfe ob gescrollt wurde oder nicht. aber das is auch unschön.
 
Ich glaube nicht, dass es eine einfachere Möglichkeit gibt, als die von stackoverflow.com.
 
Wie ich schon sagte, mehr als den kürzesten Weg gibt es nicht. Kannst ja nicht die Logik wie das Raum-Zeit-Kontinuum durch ein Wurmloch abkürzen (Stelle dir Start- und Zielpunkt wie auf der Oberfläche einer Kugel vor, das Wurmloch bohrt sich einfach durch die Kugel durch).

Ok, evtl. bin ich da jetzt etwas zu weit abgedriftet.
 
ja schon klar.
auf der Seite da gibts die Funktion : IndexFromPoint (die hab ich nich) warum?
 
Zurück
Oben