| |
VB.NET - Ein- und UmsteigerZugriff auf gebundenes DGV mit Backgroundworker | | | Autor: Bazi | Datum: 21.02.24 14:04 |
| Hallo, ich möchte über einen Backgroundworker eine Berechnung starten, und je nach Ergebnis den ErrorText in der HeaderCell und / oder die Hintergrundfarbe dieser Headercell setzen.
Mein Code bringt keinen Fehler, aber auch keine sichtbare Veränderung.
Dim hatAdressFehler As Boolean = False
Private Sub StarteAdressWorker(ByVal LvItem As LvItemRow)
' Beende den aktuellen Hintergrundworker, wenn einer läuft
If AdressWorker IsNot Nothing AndAlso AdressWorker.IsBusy Then
AdressWorker.CancelAsync()
End If
hatAdressFehler = False
' Starte einen neuen Hintergrundworker
AdressWorker = New System.ComponentModel.BackgroundWorker()
AddHandler AdressWorker.DoWork, AddressOf AdressWorker_DoWork
AddHandler AdressWorker.RunWorkerCompleted, AddressOf _
AdressWorker_RunWorkerCompleted
AdressWorker.WorkerSupportsCancellation = True
AdressWorker.RunWorkerAsync(LvItem)
End Sub
Private Sub AdressWorker_DoWork(ByVal sender As Object, ByVal e As _
System.ComponentModel.DoWorkEventArgs)
Dim LvItem = DirectCast(e.Argument, LvItemRow)
' Berechnungen durchführen
' Überprüfen ob ein Abbruch angefordert wurde
Dim mRows = LvItem.GetMassenRows
For i As Integer = 0 To mRows.Count - 1
If prüfeAdresse(mRows(i)) = False Then
hatAdressFehler = True
Exit For
End If
' Überprüfe, ob ein Abbruch angefordert wurde
If AdressWorker.CancellationPending Then
e.Cancel = True
Exit For
End If
Next
End Sub
Private Sub AdressWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e _
As System.ComponentModel.RunWorkerCompletedEventArgs)
If e.Cancelled Then
' Berechnung wurde abgebrochen
hatAdressFehler = False
Else
' Berechnung wurde erfolgreich abgeschlossen
MassenDataGridView.Columns( _
PmDataSet.Massen.AdresseColumn.ColumnName).HeaderCell.ErrorText = _
If(hatAdressFehler, "AdressFehler", Nothing) ' Fehlertext setzen
MassenDataGridView.Columns( _
PmDataSet.Massen.AdresseColumn.ColumnName).HeaderCell.Style.BackCol_
or = If(hatAdressFehler, Color.DarkOrange, Color.LightGreen)
MassenDataGridView.Invoke(New MethodInvoker(AddressOf _
ChangeHeaderCellBackColor))
SetObjBackColor(AdressFehlerLabel, Color.DarkOrange)
SetObjVisible(AdressFehlerLabel, True)
End If
End Sub
Private Sub ChangeHeaderCellBackColor()
MassenDataGridView.Columns("Adresse").HeaderCell.Style.BackColor = If( _
hatAdressFehler, Color.DarkOrange, Color.LightGreen) ' Zum Beispiel
MassenDataGridView.Invalidate() ' DataGridView neu zeichnen
End Sub
Private Function prüfeAdresse(ByVal mRow As MassenRow) As Boolean
Dim Funde = PmDataSet.LV.Current.GetMassenRows.Where(Function(a) Not _
a.RowState = DataRowState.Deleted AndAlso Not a.RowState = _
DataRowState.Detached AndAlso a.Adresse = mRow.Adresse) '.OrderBy(
' Function(a) a.LvItemID)
If Funde.Count > 1 Then
Return False
End If
Return True
End Function Bei Haltepunkten hält der Code an, die Variable wird richtig befüllt.
Aber die Veränderungen im DGV kommen nicht an.
Wo ist mein Fehler?
Danke für die Hilfe
Gruß Christian | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|