Hallo Leute,
ich habe das Problem, dass ich min. 2 Listviews habe. anhand einer funktion möchte ich automatisch ein item erstellen. in diese funktion übergebe ich die listview und den namen des items. wenn festgestellt wird, dass das item noch nicht existiert sollen automatisch alle subitems für die jeweiligen spalten hinzugefügt und das neue item zurückgegeben werden. bei der ersten listview funktioniert alles wunderbar, wie gewünscht und erwartet. bei der zweiten bekommen ich aber jedesmal, sobald ich das item weiter verarbeiten möchte, dass die index der abgefragten columns =-1 ist => ergo es "existieren" keine spalten laut dem control, werden jedoch in der form angezeigt.
Im Screenshot 1 seht ihr oben die Listview "lvItemsOV", bei der alle problemlos funktioniert, unten seht ihr die "lvItemTrade", bei der die spalten nicht "eingetragen/vorhanden" sind.
Im Screenshot 4 übergebe ich die lvItemTrade an die function createLVItem. es werden keine subitems erstellt, das anscheinend keine columns in der besagten lv vorhanden sind.
Im Screenshot 5 sieht man, dass die Columns vom Programm erkannt werden (Wie in Screenshot 3 zu sehen auch in der lv vorhanden sind), aber nicht in die lv, programmseitig, eingetragen wurden.
Ich finde meinen Fehler nicht und hoffe ihr habt die notwendigen infos, um mir helfen zu können
funktion zur erstellung des listviewitems
Ausschnitt aus dem Designer:
ich habe das Problem, dass ich min. 2 Listviews habe. anhand einer funktion möchte ich automatisch ein item erstellen. in diese funktion übergebe ich die listview und den namen des items. wenn festgestellt wird, dass das item noch nicht existiert sollen automatisch alle subitems für die jeweiligen spalten hinzugefügt und das neue item zurückgegeben werden. bei der ersten listview funktioniert alles wunderbar, wie gewünscht und erwartet. bei der zweiten bekommen ich aber jedesmal, sobald ich das item weiter verarbeiten möchte, dass die index der abgefragten columns =-1 ist => ergo es "existieren" keine spalten laut dem control, werden jedoch in der form angezeigt.
Im Screenshot 1 seht ihr oben die Listview "lvItemsOV", bei der alle problemlos funktioniert, unten seht ihr die "lvItemTrade", bei der die spalten nicht "eingetragen/vorhanden" sind.
Im Screenshot 4 übergebe ich die lvItemTrade an die function createLVItem. es werden keine subitems erstellt, das anscheinend keine columns in der besagten lv vorhanden sind.
Im Screenshot 5 sieht man, dass die Columns vom Programm erkannt werden (Wie in Screenshot 3 zu sehen auch in der lv vorhanden sind), aber nicht in die lv, programmseitig, eingetragen wurden.
Ich finde meinen Fehler nicht und hoffe ihr habt die notwendigen infos, um mir helfen zu können
funktion zur erstellung des listviewitems
VB.NET-Quellcode
- Public Function createLVItem(lv As ListView, name As String) As ListViewItem
- Dim index As Integer = -1
- For Each column As ColumnHeader In lv.Columns
- If column.Text = "Name" Then
- index = column.Index
- End If
- Next
- For Each lvItem As ListViewItem In lv.Items
- If lvItem.SubItems(index).Text = name Then
- Return lvItem
- End If
- Next
- Dim newItem As New ListViewItem
- newItem = New ListViewItem
- newItem.UseItemStyleForSubItems = False
- For a = 1 To lv.Columns.Count - 1
- newItem.SubItems.Add("")
- Next
- Return newItem
- End Function
VB.NET-Quellcode
- Private Sub lvItemsOverview_ItemSelectionChanged(sender As Object, e As ListViewItemSelectionChangedEventArgs) Handles lvItemsOV.ItemSelectionChanged
- lvItemTrade.Clear()
- Dim name As String = e.Item.SubItems(lvItemsOV_cName.Index).Text
- Dim lvItem As ListViewItem
- '...
- lvItem = createLVItem(lvItemTrade, name)
- lvItem.SubItems(lvItemTrade_cSP01.Index).BackColor = Color.FromArgb(45, 45, 45) '.Index = -1
- lvItem.SubItems(lvItemTrade_cSP02.Index).BackColor = Color.FromArgb(45, 45, 45)
- lvItem.SubItems(lvItemTrade_cSP03.Index).BackColor = Color.FromArgb(45, 45, 45)
- '...
- End Sub
Ausschnitt aus dem Designer:
VB.NET-Quellcode
- Partial Class Window
- Inherits System.Windows.Forms.Form
- '...
- <System.Diagnostics.DebuggerStepThrough()>
- Private Sub InitializeComponent()
- Me.components = New System.ComponentModel.Container()
- Me.tcMain = New System.Windows.Forms.TabControl()
- Me.tcMain_tpItemsÜbersicht = New System.Windows.Forms.TabPage()
- Me.lvItemTrade = New System.Windows.Forms.ListView() 'Diese Listview macht Probleme!
- Me.lvItemTrade_cName = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
- Me.lvItemTrade_cSP01 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
- Me.lvItemTrade_c'...
- '...
- Me.lvItemsOV = New System.Windows.Forms.ListView() 'Diese Listview funktioniert problemlos!
- Me.lvItemsOV_cName = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
- Me.lvItemsOV_cID = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
- Me.lvItemsOV_c'...
- '...
- '
- 'tcMain_tpItemsÜbersicht
- '
- Me.tcMain_tpItemsÜbersicht.Controls.Add(Me.lvItemTrade)
- Me.tcMain_tpItemsÜbersicht.Controls.Add(Me.lvItemsOV)
- '
- 'lvItemTrade
- '
- 'Hier sind alle Spalten eingetragen:
- Me.lvItemTrade.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.lvItemTrade_cName, Me.lvItemTrade_cSP01, Me.lvItemTrade_cEK, Me.lvItemTrade_cSP02, Me.lvItemTrade_cVKmin, Me.lvItemTrade_cSP03, Me.lvItemTrade_cVK10, Me.lvItemTrade_cVK20, Me.lvItemTrade_cVK30, Me.lvItemTrade_cVK40, Me.lvItemTrade_cVK50})
- Me.lvItemTrade.ForeColor = System.Drawing.Color.White
- Me.lvItemTrade.FullRowSelect = True
- Me.lvItemTrade.View = System.Windows.Forms.View.Details
- '
- 'lvItemTrade_cName
- '
- Me.lvItemTrade_cName.Text = "Name"
- Me.lvItemTrade_cName.Width = 100
- '
- 'lvItemTrade_cSP01
- '
- Me.lvItemTrade_cSP01.Text = ""
- Me.lvItemTrade_cSP01.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
- Me.lvItemTrade_cSP01.Width = 1
- '...
- '
- 'lvItemsOV
- '
- 'Hier sind alle Spalten eingetragen:
- Me.lvItemsOV.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.lvItemsOV_cName, Me.lvItemsOV_cID, Me.lvItemsOV_cSP01, Me.lvItemsOV_cFamily, Me.lvItemsOV_cType, Me.lvItemsOV_cCategory, Me.lvItemsOV_cSP02, Me.lvItemsOV_cEKMin, Me.lvItemsOV_cEKNow, Me.lvItemsOV_cSP03, Me.lvItemsOV_cVKNow, Me.lvItemsOV_cVKMax, Me.lvItemsOV_cSP04, Me.lvItemsOV_cProfitNowToMax, Me.lvItemsOV_cProfitNowToMaxPer, Me.lvItemsOV_cSP05, Me.lvItemsOV_cProfitMax, Me.lvItemsOV_cProfitMaxPer, Me.lvItemsOV_cSP06, Me.lvItemsOV_cBuyInterval, Me.lvItemsOV_cSellInterval, Me.lvItemsOV_cNew})
- Me.lvItemsOV.ForeColor = System.Drawing.Color.White
- Me.lvItemsOV.FullRowSelect = True
- Me.lvItemsOV.View = System.Windows.Forms.View.Details
- '
- 'lvItemsOV_cName
- '
- Me.lvItemsOV_cName.Text = "Name"
- Me.lvItemsOV_cName.Width = 100
- '
- 'lvItemsOV_cID
- '
- Me.lvItemsOV_cID.Text = "ID"
- Me.lvItemsOV_cID.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
- Me.lvItemsOV_cID.Width = 50
- '...
- End Sub
- '...
- Friend WithEvents lvItemsOV_cName As ColumnHeader
- Friend WithEvents lvItemsOV_cID As ColumnHeader
- Friend WithEvents lvItemsOV_cSP01 As ColumnHeader
- Public WithEvents lvItemsOV As ListView
- '...
- Friend WithEvents lvItemTrade_cName As ColumnHeader
- Friend WithEvents lvItemTrade_cSP01 As ColumnHeader
- Friend WithEvents lvItemTrade_cEK As ColumnHeader
- Friend WithEvents lvItemTrade_cSP02 As ColumnHeader
- Friend WithEvents lvItemTrade_cVKmin As ColumnHeader
- Friend WithEvents lvItemTrade_cSP03 As ColumnHeader
- Friend WithEvents lvItemTrade_cVK10 As ColumnHeader
- Friend WithEvents lvItemTrade_cVK20 As ColumnHeader
- Friend WithEvents lvItemTrade_cVK30 As ColumnHeader
- Friend WithEvents lvItemTrade_cVK40 As ColumnHeader
- Friend WithEvents lvItemTrade_cVK50 As ColumnHeader
- Friend WithEvents lvItemTrade As ListView
- '...
- End Class