Forums Neueste Beiträge
 

VB 2005: ListView mit farbigen Spalten wird nicht "sofort" richtig dargestellt

19/11/2007 - 13:42 von Oskar Vaia | Report spam
Hallo,

ich habe eine Anwendung entwickelt, welche ein Windows-Form öffnet. Darin
enthalten ist ein ListView-Objekt, welches Datensàtze aus einer Datenbank
ausgibt. Bestimmte Spalten in dem ListView-Objekt lasse ich farblich
darstellen.
Und genau hier liegt mein Problem. Die Anwendung làuft ansonsten eigentlich
einwandfrei, das ListView-Objekt wird auch mit Datensàtzen gefüllt, nur die
farbige Darstellung der Spalten will auf Anhieb nicht funktionieren. "Auf
Anhieb" deshalb, denn wenn ich mit ALT-Tab auf eine andere geöffnete
Anwendung umschalte und dann wieder auf die von mir entwickelte Anwendung
zurückwechsle, so werden die Spalten plötzlich in den Farben dargestellt, so
wie ich sie programmiert habe.
Woran kann das liegen? Sieht vielleicht jemand in den nachfolgenden
Code-snippets einen Fehler?
Irgendwie hàngt dies wohl mit einem "Refresh-Verhalten" zusammen; was meint
Ihr?

Hier kurz der Code, welcher mein Windows-Form anzeigt:

Dim dialErstellungMB As New MB_Form(KunBec, RateBECs)
dialErstellungMB.ShowDialog()
If dialErstellungMB.DialogResult = DialogResult.Cancel Then
...
Hier der Konstruktor des Windows-Form-Objektes "MB_Form":

#Region " Vom Windows Form Designer generierter Code "

Public Sub New(ByVal KBEC As KundBEC, ByVal RBECs As ArrayList)
MyBase.New()
RateBECs = RBECs

' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
CreateMyListView(RateBECs)
...
und hier der Code, welcher das ListView-Objekt bereitstellt:

Private Sub CreateMyListView(ByVal RateBECs As ArrayList)
Me.ListView = New ListView
ListView.Bounds = New Rectangle(New Point(8, 125), New Size(434,
150))
ListView.View = View.Details
ListView.LabelEdit = False
ListView.AllowColumnReorder = True
ListView.CheckBoxes = False
ListView.FullRowSelect = True
ListView.GridLines = False

If RateBECs.Count > 0 Then
Dim PosF As Int16
Dim ItemF(RateBECs.Count - 1) As ListViewItem

For PosF = 0 To RateBECs.Count - 1
ItemF(PosF) = New ListViewItem
ItemF(PosF).UseItemStyleForSubItems = False
ItemF(PosF).Text = ""

Dim Spalte1 As ListViewItem.ListViewSubItem =
ItemF(PosF).SubItems.Add(Format(DirectCast(RateBECs.Item(PosF),
RateBEC).Betrag, "#,##0.00"))
Spalte1.BackColor = System.Drawing.Color.LightBlue
Dim Spalte2 As ListViewItem.ListViewSubItem =
ItemF(PosF).SubItems.Add(Format(DirectCast(RateBECs.Item(PosF),
RateBEC).Faelligkeit, "Short Date"))
Spalte2.BackColor = System.Drawing.Color.LightBlue
ItemF(PosF).SubItems.Add(DirectCast(RateBECs.Item(PosF),
RateBEC).Rate)
Next PosF

ListView.Columns.Add("", -2, HorizontalAlignment.Left)
ListView.Columns.Item(0).Width = 0
ListView.Columns.Add(" Betrag ", -2,
HorizontalAlignment.Right)
ListView.Columns.Add(" Fàlligkeit ", -2,
HorizontalAlignment.Right)
ListView.Columns.Add("Rate", -2, HorizontalAlignment.Right)

For PosF = 0 To ItemF.Length - 1
ListView.Items.Insert(PosF, ItemF(PosF))
Next PosF

Me.Controls.Add(ListView)
End If
End Sub

Dank und Grüße

Oskar
 

Lesen sie die antworten

#1 Oskar Vaia
19/11/2007 - 17:58 | Warnen spam
Hallo,

habe ich womöglich mein Problem nicht ausführlich genug erklàrt, dass mir
hier wirklich niemand einen Tipp geben kann?

Grüße

Oskar

Ähnliche fragen