微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB.NET listview 的虚模式

搜了半天C#的很多,转换到VB.NET总不对,好不容易找到这篇,就不翻译了,很容易搞定

NND,virtualmode真不是一般的强大啊,速度简直太快了

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Sch?den
' wird nicht gehaftet.

' Um Fehler oder Fragen zu kl?ren,nutzen Sie bitte unser Forum.
' Ansonsten viel Spa? und Erfolg mit diesem Source!

' Projektversion: Visual Studio 2005
'
' Referenzen:
' - System
' - System.Data
' - System.Deployment
' - System.Drawing
' - System.Windows.Forms
' - System.Xml
'
' Imports:
' - Microsoft.VisualBasic
' - System
' - System.Collections
' - System.Collections.Generic
' - System.Data
' - System.Drawing
' - System.Diagnostics
' - System.Windows.Forms
'

' ##############################################################################
' ################################# Form1.vb ###################################
' ##############################################################################
Option Strict On

Public Class Form1
Private Structure Zahlen
Public Zahl As Integer
Public Wurzel As Double
Public Log10 As Double

Public Sub New(ByVal Zahl As Integer)
Me.Zahl = Zahl
Me.Wurzel = Math.Sqrt(Zahl)
Me.Log10 = Math.Log10(Zahl)
End Sub
End Structure
Private EinPaarZahlen As New List(Of Zahlen)

Private Sub Form1_Load(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles MyBase.Load

' Generiert ein paar Zahlen,welche im ListView-Control angezeigt werden
For i As Integer = 1 To 1000000
EinPaarZahlen.Add(New Zahlen(i))
Next i
End Sub

''' <summary>
''' Aktiviert den virtuellen Modues des ListView-Controls
''' </summary>
''' <remarks></remarks>
Private Sub btnHinzufuegenVirtuell_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles btnHinzufuegenVirtuell.Click

' Virtual-Mode anschalten
' Vor diesem Schritt ist es wichtig,dass das ListView keine "per Hand"
' hinzugefügten Elemente enth?lt,ansonsten erh?lt man eine
' Exception
lsvBeispiel.VirtualMode = True

' Das ListView erwartet in der Eigenschaft VirtualListSize die Anzahl
' der Elemente,die es anzeigen soll
lsvBeispiel.VirtualListSize = EinPaarZahlen.Count

btnHinzufuegennormal.Enabled = False
btnHinzufuegenVirtuell.Enabled = False
End Sub

''' <summary>
''' Fügt die Elemente auf "normale" Art- und Weise in das
''' ListView ein.
''' </summary>
''' <remarks>Braucht eine halbe Ewigkeit...</remarks>
Private Sub btnHinzufuegennormal_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles btnHinzufuegennormal.Click

Me.Cursor = Cursors.WaitCursor

' Verhindert,dass das Control sich w?hrend dem Hinzufügen der Eintr?ge
' immer wieder neu zeichnet
lsvBeispiel.BeginUpdate()

For Each Zahl As Zahlen In EinPaarZahlen
lsvBeispiel.Items.Add(New ListViewItem( _
New String() { _
Zahl.Zahl.ToString("########0.####"),_
Zahl.Wurzel.ToString("########0.####"),_
Zahl.Log10.ToString("########0.####")}))
Next

lsvBeispiel.EndUpdate()

btnHinzufuegennormal.Enabled = False
btnHinzufuegenVirtuell.Enabled = False

Me.Cursor = Cursors.Default
End Sub

Private Sub btnListeLeeren_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles btnListeLeeren.Click

' Auch das Entfernen einer gro?en Menge "normaler" Eintr?ge
' kostet eine Menge Zeit
Me.Cursor = Cursors.WaitCursor

lsvBeispiel.Items.Clear()

Me.Cursor = Cursors.Default

' VirtualMode ausschalten
lsvBeispiel.VirtualListSize = 0
lsvBeispiel.VirtualMode = False

btnHinzufuegennormal.Enabled = True
btnHinzufuegenVirtuell.Enabled = True
End Sub

''' <summary>
''' Wird aufgerufen,wenn das ListView den Eintrag mit dem Index
''' e.ItemIndex ben?tigt
''' </summary>
Private Sub lsvBeispiel_RetrieveVirtualItem(ByVal sender As System.Object,_
ByVal e As System.Windows.Forms.RetrieveVirtualItemEventArgs) _
Handles lsvBeispiel.RetrieveVirtualItem

' Holt die Zahl aus unserer Liste,die das ListView-Control ben?tigt.
Dim Zahl As Zahlen = EinPaarZahlen(e.ItemIndex)

Dim lviZahl As New ListViewItem( _
New String() { _
Zahl.Zahl.ToString("########0.####"),_
Zahl.Log10.ToString("########0.####")})

' Das ListView-Control erwartet wenn das Ereignis abgearbeitet ist in ' e.Item das ListViewItem,welches es angefordert hat e.Item = lviZahl End Sub End Class

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐