C# - ComboBox - Rückwärts Selektierung
AngelOfDeath 15.06.2005 - 16:36 2372 9
AoD
aka AngelOfDeath
|
Huhu, ich hab eine ComboBox bei der ich eine eigene Selektierung vornehmen will. Normalerweise wenn man cmb.SelectAll();
oder cmb.Select(5, 3);
ausführt wird von links nach rechts markiert, sodass der Cursor am Ende der Selektion steht. Ich brauche nun aber den Cursor genau auf der anderen Seite, also links vom markierten Text. Wenn der Text nämlich länger ist, als die ComboBox breit, dann wird bei SelectAll() der Text so verschoben, dass das Ende zu sehen ist (weil ja dort nun der Cursor steht). Genau das will ich aber nicht haben, egal was markiert ist, der Cursor soll am Anfang der Selektion stehen. Ich habs schon probiert mit cmb.Select(8, -3);
aber die Länge der Markierung darf nicht unter 0 sein, sonst bekomm ich eine Exception. Hoffe ihr könnt mir da weiterhelfen. MfG AoD
Bearbeitet von AoD am 20.06.2005, 10:56 (nicht hinzugefügt)
|
AoD
aka AngelOfDeath
|
niemand eine Idee? es kann auch eine Lösung mit Windows API sein.
|
Frys_Assassin
information keeper
|
ich verstehe nicht ganz ... du markierst einen text in einer combo-box?
|
AoD
aka AngelOfDeath
|
Ich glaub ich werds mal anhand von Bildern erklären. Ich hab mir ein Control gebastelt, das im Prinzip nur eine ComboBox enthält, aber um einige Funktionen erweitert, so wird zB beim Tippen, die Liste aufgeklappt, es wird der letzte Wert gespeichert etc.  Die wichtigste Funktion ist das automatische Vorschlagen, also wenn ich 99 eintippe, wird der erste Eintrag mit 99 ausgewählt und der Rest ist markiert, damit ich zB nur eine 9 tippen muss, und dann der 999er ausgewählt ist. Nur schaut das bei langem Text nach dem Tippen so aus:  anstatt so  (ich hab diese Markierung mit der Maus gemacht, aber es soll ja automatisch geschehen) beim ersten Bild ist von links nach rechts markiert (Cursor blinkt ganz rechts) und beim zweiten von rechts nach links (Cursor blinkt dort wo die Eingabe eigentlich stattfindet).
|
watchout
Legendundead
|
kann ich mir nicht vorstellen wie das gehen soll... aber muss es denn überhaupt markiert sein?
Für einen Vorschlag musst du ja nicht unbedingt den Text reinpasten - im Gegenteil, die Win-Combobox hat afair sowieso schon eine solche Funktion eingebaut, warum sollte man da noch was dazu coden?
|
mat
AdministratorLegends never die
|
irgendwie bekommt man sicher die reichweite der markierung, also start und endposition. und mit denen müsst man ja dann die markierung neu setzen können.
|
AoD
aka AngelOfDeath
|
ich kann ja auch mit cmb.Select(5, 3); bei 5 starten und 3 Zeichen markieren. allerdings geht die Markierung nur nach rechts (=> Cursor blinkt am Ende). Ich bräuchte aber cmb.Select(5, -3); also bei 5 anfangen und 3 Zeichen davor markieren, damit der Cursor nun am Anfang der Markierung steht
@watchout, nein geht nicht, er scrollt zwar so, dass das passende item im dropdown sichtbar ist, aber er markiert es nicht. sonst hätt ich eh gerne drauf verzichtet.
|
DKCH
Administrator ...
|
also zumindest bei .NET 2.0 Beta 2 tut er genau das (AutoCompleteMode SuggestAppend, AutoCompleteSource ListItems)
|
AoD
aka AngelOfDeath
|
leider keine alternative, weil mein projekt zu groß ist, um es in kurzer zeit auf 2.0 Tauglichkeit zu testen (soviel zeit bleibt mir nicht mehr  )
|
that
Hoffnungsloser Optimist
|
Ich hab vorige Woche ein bisserl gesucht, aber keine Lösung gefunden. .NET kann das scheinbar einfach nicht (Win32 direkt allerdings schon).
|