Edit by ErfinderDesRades: (Thema verschoben) Bitte richtiges UnterForum wählen!
Hallo Zusammen,
bei meinem Programm wird ein Thread gestartet, welcher Daten verarbeitet. Die Daten aus dem Thread sollen nun in ein DataGridView, welches sich auf der Form befindet, gebracht werden.
Folgender Code, den im Designer erstellten DataTable mit den Daten des Threads befüllen:
Spoiler anzeigen
Den DataTable hatte ich im Designer erstellt, weil es sonst recht viel Code ist den DataTable so zu erzeugen.
Ich bin mir fast sicher, dass dies unter Umständen anders zu handeln ist. Naja, jedenfalls wird der DataTable befüllt und dann der UpdateProzess für das DataGridView aufgerufen.
Spoiler anzeigen
Hier komme ich dann bei dem oben markierten Punkte nicht wirklich weiter. Wie genau würdet Ihr ein beliebiges DataGridView aus einem Thread aktualisieren?
Gruß, FireEmerald
Hallo Zusammen,
bei meinem Programm wird ein Thread gestartet, welcher Daten verarbeitet. Die Daten aus dem Thread sollen nun in ein DataGridView, welches sich auf der Form befindet, gebracht werden.
Folgender Code, den im Designer erstellten DataTable mit den Daten des Threads befüllen:
VB.NET-Quellcode
- For Each _Character As Character In _CharacterList
- Dim _NewRow As dsResults.dtCharactersRow = fmMain.DsResults.dtCharacters.NewdtCharactersRow
- With _NewRow
- .colName = _Character.Name
- .colGUID = _Character.GUID
- .colAccountID = _Character.AccountID
- .colKnownTitles = _Character.BitmaskBackup
- '.colAffected =
- '.colLeft =
- '.colRemoved =
- End With
- fmMain.DsResults.dtCharacters.Rows.Add(_NewRow)
- Next
- Dim _update As New ControlDataGridViewUpdater(fmMain.dgvCharacters)
- _update.SetNewDT(fmMain.DsResults.dtCharacters)
Den DataTable hatte ich im Designer erstellt, weil es sonst recht viel Code ist den DataTable so zu erzeugen.
Ich bin mir fast sicher, dass dies unter Umständen anders zu handeln ist. Naja, jedenfalls wird der DataTable befüllt und dann der UpdateProzess für das DataGridView aufgerufen.
VB.NET-Quellcode
- Option Explicit On
- Option Strict On
- Public Class ControlDataGridViewUpdater
- Private _dgv As DataGridView
- Private _dt As DataTable
- Public Sub New(dgv As DataGridView)
- _dgv = dgv
- End Sub
- Private ReadOnly Property P_dgv As DataGridView
- Get
- Return _dgv
- End Get
- End Property
- Public Sub SetNewDT(dt As DataTable)
- SyncLock Me
- _dt = dt
- P_dgv.Invoke(New MethodInvoker(AddressOf ThreadSaveSet)) '// InvalidOperationException - "Invoke oder BeginInvoke kann für ein Steuerelement erst aufgerufen werden, wenn das Fensterhandle erstellt wurde."
- End SyncLock
- End Sub
- Private Sub ThreadSaveSet()
- Me.P_dgv.DataSource = _dt
- End Sub
- End Class
Hier komme ich dann bei dem oben markierten Punkte nicht wirklich weiter. Wie genau würdet Ihr ein beliebiges DataGridView aus einem Thread aktualisieren?
Gruß, FireEmerald
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „FireEmerald“ ()