Dans un projet Windows Forms, j'ai plusieurs combos. La première zone de liste déroulante contient une liste d'objets. Ces objets ont alors plusieurs listes qui sont utilisées comme sources de données pour les listes déroulantes successives, en fonction de l'élément choisi dans le premier.Pourquoi ces listes déroulantes ne se mettent-elles pas correctement à jour lors du changement de source de données dans Windows Forms (VB)?
Lorsque le premier élément est sélectionné, les autres zones de liste modifient correctement. Lorsque cet élément est modifié une deuxième fois (ou n'importe quelle heure successive), les autres zones de liste déroulante ne sont pas mises à jour correctement. Lors du débogage, cela indique que les autres zones de liste déroulante ont leur source de données correctement assignée, avec le bon 'nombre' d'éléments. Mais les éléments ne s'affichent pas réellement. Quelle pourrait-être la cause?
Private Sub cmbPackage_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPackage.SelectedIndexChanged
// The Package controls what other options are available.
If (TypeOf (cmbPackage.SelectedItem) Is Package) Then
// Set current package as a member object to see if it was a scoping issue
_currentPackage = CType(cmbPackage.SelectedItem, Package)
ClearOptionDropdowns()
cmbReward.DataSource = _currentPackage.Rewards
cmbPayment.DataSource = _currentPackage.PaymentTypes
cmbCommMethod.DataSource = _currentPackage.CommunicationMethods
cmbBillMethod.DataSource = _currentPackage.BillMethods
cmbNotification.DataSource = _currentPackage.BillNotifications
cmbReward.Refresh()
cmbPayment.Refresh()
cmbCommMethod.Refresh()
cmbBillMethod.Refresh()
cmbNotification.Refresh()
...
...
End Sub
Private Sub ClearOptionDropdowns()
cmbReward.DataSource = Nothing
cmbPayment.DataSource = Nothing
cmbCommMethod.DataSource = Nothing
cmbBillMethod.DataSource = Nothing
cmbNotification.DataSource = Nothing
' Also had x.items.clear(), but removed to see if that was affecting it
End Sub
Avez-vous essayé d'appeler la méthode '.Refresh()' sur les combobox après avoir défini '.DataSource = Nothing'? – ChrisF
Juste essayé, n'a pas fonctionné. –