vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Zugriff 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

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zugriff auf gebundenes DGV mit Backgroundworker92Bazi21.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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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