2010-04-27 4 views
1

Im utilisant C# .net Windows formulaire de demande. J'ai deux comboboxes A et B. J'ai Pouplé A avec quelques valeurs. Maintenant, si je choisis une valeur de A, je devrais être capable de remplir B avec tous les éléments de A sauf l'élément sélectionné.Utilisation de deux zones de liste déroulante

+0

oui, vous devrait être capable de le faire. Où est la question? :) –

+0

Quelle est votre question? – Lazarus

Répondre

1

vous voulez peut-être ceci:

for (int i = 0; i < comboBox1.Items.Count;i++) 
    { 
     if ((comboBox1.SelectedIndex)!=i) 
     { 
      comboBox2.Items.Add(comboBox2.Items[i]); 
     } 
    } 

vous devez effacer ComboBox2 avant d'ajouter de nouveaux éléments

0

bien puisque vous dites que les deux ont les mêmes valeurs. sur l'événement sélectionné du premier. récupère l'élément sélectionné et le retire du second combo.

+0

cela ne fonctionnera pas si vous sélectionnez ensuite un deuxième élément dans A –

+0

Eh bien une validation mineure serait encore le faire fonctionner ?? – Aneef

1

dans l'élément sélectionné a modifié l'événement de A, ajouter du code qui efface B, puis boucle chaque élément dans la collection Item A et l'ajoute à B tant que l'index de l'élément actuel est différent de l'index de SelectedItem dans A.

Quelque chose comme (pseudo code, non testé)

b.Items.Clear; 
for(int i=0; i<A.Items.Count; i++) 
{ 
    if (i!=A.SelectedItemIndex) 
    { 
    b.Items.Add(A.Items[i]); 
    } 
} 

ou

B.Items.Clear; 
foreach(object o in A.Items) 
{ 
    b.Items.Add(o); 
} 
b.Items.Remove(A.SelectedItem); 

devrait le faire aussi bien.

+0

c'est un bon sam – Aneef

1

ici est simple exemple de la façon dont vous pouvez aller à ce sujet:

 private void Form1_Load(object sender, EventArgs e) 
     { 
      AComboBox.Items.Add("1"); 
      AComboBox.Items.Add("2"); 
      AComboBox.Items.Add("3"); 
      AComboBox.Items.Add("4"); 
      AComboBox.Items.Add("5"); 
      AComboBox.Items.Add("6"); 
     } 

     private void AComboBox_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      BComboBox.Items.Clear(); 

      //* One way. 
      foreach (object obj in AComboBox.Items.Cast<object>().Where(obj => !obj.Equals(AComboBox.Text))) 
      { 
       BComboBox.Items.Add(obj); 
      } 

      //* Another way (if possible duplicates in A). 
      for (int i = 0; i < AComboBox.Items.Count; ++i) 
      { 
       if (i != AComboBox.SelectedIndex) 
        BComboBox.Items.Add(AComboBox.Items[i]); 
      } 
     } 
Questions connexes