vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: ListView, Eintrag markieren und im sichtbaren Bereich oben anzeigen... 
Autor: Heinz-Josef Bomanns
Datum: 04.06.10 08:07

Hallo Maas,

das führt zum gleichen Ergebnis, der markierte Eintrag wird immer unten im LV angezeigt, scheint ein Glitsch von 'EnsureVisible' zu sein. Hab 'ne alte VB6-Lösung rausgekramt und angepasst, damit geht's jetzt:

Private Declare Function SendMessage Lib "user32" _
                Alias "SendMessageA" ( _
                ByVal hWnd As IntPtr, _
                ByVal wMsg As Integer, _
                ByVal wParam As Integer, _
                ByVal lParam As Integer) As Integer
 
  Private Const LVM_FIRST = &H1000
  Private Const LVM_GETTOPINDEX = (LVM_FIRST + 39)
 
  Public Function LVGetTopIndex(ByVal hWndLV As IntPtr) As Integer
 
    LVGetTopIndex = SendMessage(hWndLV, _
                                LVM_GETTOPINDEX, _
                                0&, _
                                0&)
 
  End Function 'LVGetTopIndex
 
  Public Function LVSetTopIndex(ByVal lv As ListView, ByVal TopIndex As _
    Integer) As Integer
    Dim lvCurrTopIndex, lvCurrIndex As Integer
    Dim Diff, NewIndex As Integer
 
    On Error Resume Next
    LVSetTopIndex = -1 'Flag: Nix geändert
    lvCurrTopIndex = LVGetTopIndex(lv.Handle) 'Index 1. Eintrag im sichtbaren 
    ' Bereich
    lvCurrIndex = lv.SelectedItems(0).Index 'Index des markierten Eintrages
    Diff = TopIndex - lvCurrTopIndex 'Differenz zwischen 1. und aktuellem 
    ' Eintrag
    NewIndex = lvCurrIndex + Diff 'Index des Eintrages der ins Bild geholt 
    ' werden muss
    If NewIndex < lv.Items.Count - 1 Then 'Hamwer überhaupt soviele?
      lv.Items(NewIndex).EnsureVisible() 'Jo, reinschieben
      LVSetTopIndex = NewIndex 'Index 1. Eintrag im sichtbaren Bereich
    End If
 
  End Function 'LVSetTopIndex
Aufruf dann einfach z.B. so:

ListView.Items(x).Selected = True
ListView.SelectedItems(0).EnsureVisible
LVSetTopIndex ListView, x


_________________________________________
ATH, Bomi

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ListView, Eintrag markieren und im sichtbaren Bereich oben a...2.266Heinz-Josef Bom...03.06.10 03:06
Re: ListView, Eintrag markieren und im sichtbaren Bereich ob...1.513ModeratorDaveS03.06.10 09:08
Re: ListView, Eintrag markieren und im sichtbaren Bereich ob...1.409Heinz-Josef Bom...03.06.10 09:33
Re: ListView, Eintrag markieren und im sichtbaren Bereich ob...1.487Maas03.06.10 14:10
Re: ListView, Eintrag markieren und im sichtbaren Bereich ob...2.108Heinz-Josef Bom...04.06.10 08:07
Re: ListView, Eintrag markieren und im sichtbaren Bereich ob...1.431Maas04.06.10 12:32

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel