加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB.NET listview 的虚模式

发布时间:2020-12-16 22:45:12 所属栏目:大数据 来源:网络整理
导读:搜了半天C#的很多,转换到VB.NET总不对,好不容易找到这篇,就不翻译了,很容易搞定 NND,virtualmode真不是一般的强大啊,速度简直太快了 ' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Sch?den ' wi

搜了半天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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读