| |
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 | |
Zugriff auf gebundenes DGV mit Backgroundworker | 93 | Bazi | 21.02.24 14:04 |
| 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 |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 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
|
|