搜了半天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 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|