Vielleicht so ....
http://social.msdn.microsoft.com/Forums/de-DE/e658f710-d3bd-4b0b-8797-d40000c1a6ff/set-listview-scroll-position?forum=winforms
Beim Click auf den Button wird der Scroll durchgeführt.
Option Explicit On
Option Strict On
Imports System.Runtime.InteropServices.Marshal
Public Class lvScroller
Inherits System.Windows.Forms.Form
Dim WithEvents button1 As New Button With {.Parent = Me, .Top = 100}
Dim WithEvents lv As New ListView With _
{.Parent = Me, .Width = 200, .Scrollable = True, .View = View.Details}
Dim si As New SCROLLINFO()
Declare Function GetScrollInfo Lib "user32" Alias "GetScrollInfo" _
(ByVal hWnd As IntPtr, ByVal n As Integer, _
ByRef lpScrollInfo As SCROLLINFO) As Integer
Declare Function SetScrollInfo Lib "user32" Alias "SetScrollInfo" _
(ByVal hWnd As IntPtr, ByVal n As Integer, _
ByRef lpcScrollInfo As SCROLLINFO, ByVal bool As Boolean) As Integer
Private Const LVM_FIRST As Int32 = &H1000
Private Const LVM_SCROLL As Int32 = LVM_FIRST + 20
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function SendMessage _
(ByVal hWnd As IntPtr, ByVal msg As Int32, _
ByVal wParam As Int32, ByRef lParam As Int32) As Boolean
End Function
Public Structure SCROLLINFO
Public cbSize As Integer
Public fMask As Integer
Public nMin As Integer
Public nMax As Integer
Public nPage As Integer
Public nPos As Integer
Public nTrackPos As Integer
End Structure
Private Const SB_HORZ As Integer = 0
Private Const SB_VERT As Integer = 1
Private Const SIF_RANGE As Integer = &H1
Private Const SIF_PAGE As Integer = &H2
Private Const SIF_POS As Integer = &H4
Private Const SIF_TRACKPOS As Integer = &H10
Private Const SIF_ALL As Integer = _
SIF_RANGE Or SIF_PAGE Or SIF_POS Or SIF_TRACKPOS
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles button1.Click
Dim si As SCROLLINFO
si.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(si)
si.fMask = SIF_POS
GetScrollInfo(lv.Handle, SB_HORZ, si)
SendMessage(lv.Handle, LVM_SCROLL, -si.nPos, 0)
lv.Refresh()
End Sub
Private Sub lvscroll_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
lv.Columns.Add("SP1", 120)
lv.Columns.Add("SP2", 120)
Dim lvit As ListViewItem = _
lv.Items.Add("Das ist die erste Spalte in der ersten Zeile")
lvit.SubItems.Add("Das ist die zweite Spalte in der ersten Zeile")
lvit = lv.Items.Add("Das ist die erste Spalte in der zweiten Zeile")
lvit.SubItems.Add("Das ist die zweite Spalte in der zweiten Zeile")
End Sub
Private Sub InitializeComponent()
Me.SuspendLayout()
'
'lvScroller
'
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Name = "lvScroller"
Me.ResumeLayout(False)
End Sub
End Class
Beitrag wurde zuletzt am 28.09.14 um 12:03:37 editiert. |