Laden...

Wie macht man ein Undo in der ComboBox?

Erstellt von Brendan vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.092 Views
B
Brendan Themenstarter:in
39 Beiträge seit 2006
vor 11 Jahren
Wie macht man ein Undo in der ComboBox?

Hallo !

Wir haben zu ComboBoxen auf unseren Masken ein Kontextmenü hinzugefügt, das unter anderem den Punkt "Rückgängig" enthält.
Sinn dieses Menüpunktes ist es, nachdem der Anwender aus der Itemliste einen anderen Eintrag ausgewählt hat, den vorhergehenden wieder herstellen zu können.
Wir hatten angenommen, dass dies so geht:

SendMessage(mComboBox.Handle, WM_UNDO, 0, 0);

Leider tut sich bei Ausführung dieser Anweisung gar nichts.
Ebenso wenig bei dieser Fassung:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
SendMessage(FindWindowEx(mComboBox.Handle,IntPtr.Zero,string.Empty,string.Empty), WM_UNDO, 0, 0);

Weiss jemand Rat?

Mit freundlichen Grüßen,
Brendan

Die Lösung ist immer ganz einfach.
Nur der Weg dorthin ist schwierig!

5.658 Beiträge seit 2006
vor 11 Jahren

Hi,

also ich kenne keine Combobox, die nach Drücken von Strg-Z die vorherige Auswahl wiederherstellt. Das mußt du schon selbst programmieren, schätze ich.

Christian

Weeks of programming can save you hours of planning

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo Brendan,

vermutlich bezieht sich das WM_UNDO nur auf das Editieren des Textes innerhalb des TextBox-Teils der ComboBox (wirkt also bei reinen DropDownListen gar nicht). Ein Undo was die Selektion anbetrifft muss man wohl selber implementieren.

herbivore

T
156 Beiträge seit 2012
vor 11 Jahren

Hallo Brendan,

eine Eigenschaft, die in einer ComboBox eine Historie enthält ist mir nicht bekannt.
Ich würde hier mit einem Dictionary arbeiten, in dem jeder Wechsel vermerkt wird. Im QuellCode kannst du dann die Message entsprechend auswerten und in der ComboBox den vorherigen Wert wieder einstellen.

Gruß, Karl

B
357 Beiträge seit 2010
vor 11 Jahren

Oder eben gleich eine Klasse ableiten und mit entsprechender Funktion versehen. Dann macht man sich die Arbeit wenigstens nur ein Mal 😉

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo telfa,

Ich würde hier mit einem Dictionary arbeiten

vermutlich besser ein Stack oder gleich sowas wie Multilevel-Undo/-Redo mit dem Command-Muster.

herbivore

4.221 Beiträge seit 2005
vor 11 Jahren

Falls Du ein Databinding hast...

Suchbegriffe:

CancelCurrentEdit
BindingManagerBase
CurrencyManager

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...