2010-08-10 7 views
0

J'ai une liste déroulante qui est databound et mise à jour sans aucun problème. Le problème que j'ai est que si l'utilisateur tape quelque chose dans la liste déroulante, puis utilise le bouton de fermeture [X] dans la fenêtre sans tabulation, les données ne sont pas mises à jour. J'ai regardé partout sur le web, mais je ne trouve pas d'aide ou de conseils pertinents. La seule idée est d'avoir à forcer une mise au point et peut-être que cela forcerait la combobox à voir la mise à jour.Winforms Databound ComboBox ne se met pas à jour lorsque la fenêtre est fermée

Répondre

0

Essayez d'ajouter l'événement FormClosing sur votre formulaire.

L'événement FormClosing se produit lors de la fermeture du formulaire.

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) 
{  
    //force an event to have the cbo updates fire. 
    txtFoo.Focus(); 
} 

ou VB.NET

Private Sub Form1_FormClosing(sender as Object, e as FormClosingEventArgs) _ 
    Handles Form1.FormClosing 

    'force an event to have the cbo updates fire. 
    txtFoo.Focus() 
End Sub 

À partir de là, vous pouvez appeler la méthode/logique pour avoir le contenu de votre combobox enregistrés dans votre magasin de données.

+0

Puisqu'il est déjà databound, j'essaye pour la liste déroulante de mettre à jour la source de données. J'ai une trentaine de combobox et de multiples formulaires, c'est un problème. J'espère qu'il y a un autre correctif/solution de contournement, donc je n'ai pas à gérer manuellement la mise à jour. Merci pour l'aide. –

+0

@B Z: en effet, existe-t-il une méthode qui peut être appelée sur cette combobox pour déclencher sa mise à jour vers la source de données? c'est-à-dire quel événement ou méthode pourrait être appelé pour s'assurer qu'il est mis à jour? Presque comme le même événement que la touche Entrée appelait en tapant dans la liste déroulante. –

+0

Si je me concentre sur un contrôle séparé, la liste déroulante se met à jour. –