2009-10-13 7 views
0

J'ai un ComboBox qui a une liste de EmpolyeeNames. Lorsqu'un utilisateur sélectionne un EmpolyeeName "e1", un ListBox ci-dessous est rempli avec des données pour l'employé choisi. Ces données peuvent être modifiées. L'utilisateur et doit appuyer sur le bouton Enregistrer après toutes les modifications sont effectuées. Mais si l'utilisateur oublie d'appuyer sur Enregistrer et de sélectionner un autre employé de la ComboBox, dites "e2", ici je demande à l'utilisateur mEssagebox "Voulez-vous enregistrer les données pour l'employé" e1 " si oui alors je sauvegarde les données de employé en particulier « e1 »,C# -comboBox Selected IndexChange

mais ici tout en économisant l'index de zone de liste déroulante de données est changée et son spectacle de texte employé récemment sélectionné « e2 », mais les données de l'employé « e1 ».

Comment puis-je conserver l'ancien texte précédent d'employer "e1" dans comboBox jusqu'à ce que la sauvegarde soit complétée.?

Répondre

3

Tout simplement, w Lorsque l'option combobox est sélectionnée, placez l'employé dans une variable de classe. Utilisez cette variable de classe au lieu de l'élément dans la liste déroulante. Après avoir enregistré (ou invité) l'utilisateur, vous pouvez définir la variable sur le nouvel élément sélectionné.

1

Votre objectif ici devrait vraiment être sur la façon dont vous allez détecter lorsque l'utilisateur a changé des données dans la liste. Vous pourriez placer un drapeau quelque part qui sera un indicateur si certaines données ont été changées pour cet utilisateur particulier. Si, par exemple, le texte change dans l'élément de la liste, vous pouvez utiliser l'événement TextChanged pour définir l'indicateur.

Exemple:

bool employeeEdited = false; 

private ComboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (employeeEdited) 
    { 
     // prompt user to save 
    } 
    // reset flag 
    employeeEdited = false; 
} 

private void ListBox1_TextChanged(object sender, EventArgs e) 
{ 
    employeeEdited = true; 
} 
+0

James, Im ayant une -CheckandSaveChanges de fonctions communes(). dans -CheckandSaveChanges() seulement je manipule l'invite et n'importe quelle modification ..et s'il y a des changements .. je sauve par un ouvrier d'arrière-plan. J'appelle la fonction CheckandSaveChanges sur selectedIndexChange de la liste déroulante, cependant le texte dans la liste déroulante définit à récemment sélectionné pas le texte précédent de employee1. – Anees

+0

Vous devrez actualiser la liste, c'est-à-dire la repeupler si l'utilisateur décide de ne pas enregistrer les modifications. Ou vous pouvez simplement faire l'actualisation après la méthode CheckAndSaveChanges car malgré tout, les informations correctes apparaîtront de toute façon car vous auriez enregistré les nouvelles informations à ce stade. – James