Neue Einträge im ListView selektieren und dann Cursor synchronisieren

07/08/2009 - 08:28 von Uwe Weih | Report spam
Hallo,

ich habe ein Menüeintrag zum Einfügen eines neuen Datensatzes erstellt
und dem "Einfg" zugewiesen. Drücke ich auf die Einfügen-Taste wird ein
Datensatz zum ListView zugefügt und anschließend die Selektion auf
diesen Eintrag gesetzt.

Der Teil, der neue Daten nach einen bestehenden Eintrag einfügt (wenn
nichts selektiert wurde oder man auf dem letzten Datensatz steht, spare
ich aus), sieht so aus:

Dim loclvwItem As New ListViewItem(Daten1)
loclvwItem.SubItems.Add(Daten2)
loclvwItem.SubItems.Add(Daten3)

i = lvwDaten.SelectedIndices(0)
i += 1
lvwDaten.Items.Insert(i, loclvwItem)

lvwDaten.Items(i).Selected = True
lvwDaten.Items(i).EnsureVisible()

An sich sieht das auch erfolgreich aus, jedenfalls steht dann die
Selektion dort, wo ich sie haben möchte. Dann füge ich mal einige
Datensàtze ein und drücke die Cursortaste, um im Listview zu scrollen
und dann springt die Selektion an die nàchste Position, die vor dem
Einfügen aktiv war. Wieso?

Ach ja, ich habe Multiselect auf false, kann also nur eine Zeile
selektieren.

Wie erreiche ich also das nach einer vom Programm gesetzten Selektion
ich durch Drücken der Cursortasten Up/Down von diesem Punkt aus
fortfahren kann. Wenn das das Problem ist...

Ciao

Uwe
 

Lesen sie die antworten

#1 Uwe Weih
09/08/2009 - 16:30 | Warnen spam
Hallo Me.Name :-),

Uwe Weih schrieb:

Wie erreiche ich also das nach einer vom Programm gesetzten Selektion
ich durch Drücken der Cursortasten Up/Down von diesem Punkt aus
fortfahren kann.



ich antworte mal mir selbst, falls jemand durch eine Suchmaschiene auf
die Frage kommt und eine Antwort sucht:

lvwDaten.Items(i).Selected = True
lvwDaten.Items(i).Focused = True
lvwDaten.Items(i).EnsureVisible()

Und eventuell noch:

lvwDaten.Select()

Dann kann man direkt mit den Cursortasten weiterarbeiten.

Ciao

Uwe

Ähnliche fragen