Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: BindingSource.ListChanged eventin laukeamisen estäminen

ari kood [28.11.2019 07:36:03]

#

Jos datasetin taulun luokassa muutetaan usean rivin arvoja, laukeaa formilla BindingSourcen ListChanged eventti tarpeettomasti joka muutoksen jälkeen.

Loin taulun luokkaan eventin;

Partial Public Class DataTable
   Public Event EditingStateChanged(Byval State as Boolean)

   Private Sub Editing()
      RaiseEvent EditingStateChanged(True)
         'Muokataan rivejä
      RaiseEvent EditingStateChanged(False)
   End Sub

Formilla sitten

Private Sub Table_EditingStateChanged(Byval State as Boolean) Handles DataSet.Table.EditingStateChanged

   If State = True Then
      BindingSource.RaiseListChangedEvents = False
   Else
      BindingSource.RaiseListChangedEvents = True
      BindingSource.ResetBindings(False)
   End If

End Sub

Toimii, mutta mietin vain, että mahtaako olla paras tapa toteuttaa tuo?
Miten te kokeneemma koodarit tuo tekisitte? Ehkä tuohon on jokin valmis tapa..

ari kood [29.11.2019 08:40:42]

#

Ok, näyttäisi että seuraava ajaa saman asian;

'Taulussa
Partial Public Class DataTable

   Private Sub Editing()
      Me.BeginInit
         'Muokataan rivejä
      Me.EndInit
   End Sub
'Formilla
Private Sub BindingSource_ListChanged(...) Handles BindingSource.ListChanged
   If DataSet.DataTable.IsInitialized Then
      'Tee jotain
   End If
End Sub


Private Sub DataTable_Initialized(...) Handles DataSet.DataTable.Initialized
   BindingSource.ResetBindings(False)
End Sub

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta