2009-09-03 16 views
1

J'ai un combobox qui va à la base de données pour charger son contenu en cliquant sur la flèche de la liste déroulante. si après la liste déroulante est montré avec des données et je ne sélectionne rien, que la valeur actuelle de la liste déroulante est époustouflé. Dans ma routine pour charger les données, j'ai essayé d'enregistrer la valeur actuelle et de la restaurer après le chargement. ne fonctionne pas.Windows Forms ComboBox problème

[Modifier] ajouté le code du commentaire ici pour la lisibilité

MyUltraCombo myultracombo = new MyUltraCombo(); 
//MyUltraCombo inherits from UltraCombo inside MyUltraCombo, I keep the table name to load from 
MyUltraCombo.BeforeDropDown += new System.ComponentModel.CancelEventHandler(cb_BeforeDropDown); 
//inside the eventhandler 
myultracombo.Load(); 
//inside the Load method 
datatable = DataUtility.GetAllRecords(tablename); 
combobox.datasource = datatable; 
+0

Pouvez-vous poster votre code, s'il vous plaît? – Sesame

+0

MyUltraCombo myultracombo = nouveau MyUltraCombo(); MyUltraCombo hérite de UltraCombo l'intérieur MyUltraCombo, je garde le nom de la table pour charger à partir MyUltraCombo.BeforeDropDown + = new System.ComponentModel.CancelEventHandler (cb_BeforeDropDown); à l'intérieur du gestionnaire d'événement myultracombo.Load(); dans la méthode Load datatable = DataUtility.GetAllRecords (nom_table); combobox.datasource = datable – codemnky

Répondre

1

Si vous stockez « la valeur actuelle » comme juste la propriété SelectedItem, alors il ne sera probablement pas un objet qui est présent dans le nouvelle liste, car il s'agira d'objets complètement nouveaux. Ce que vous devrez faire est de stocker un identifiant de la valeur actuelle (si vous avez de la chance d'avoir un identifiant unique) et ensuite chercher dans la liste nouvellement créée pour un objet avec le même identifiant (ou tout ce que vous utilisez pour identifier un élément) , peut-être juste ToString() ...).