2009-05-20 6 views
0

Je viens de concevoir un simple "For Loop" en utilisant une application en forme de fenêtre. Je voudrais que ce sera seulement cliquable une fois qu'il ne répétera pas la même information si je clique sur le bouton. Comment pourrais-je faire ça? grâce Voici mon code:pour les applications de formulaires de fenêtres en boucle

 int count; 

     for (count = 0; count < 5; count = count + 1) 
     { 
      listBox1.Items.Add("This is count: " + count); 
     } 
     const string textEnd = "Done!!!"; 
     { 
      listBox1.Items.Add(textEnd); 
     } 

==== === Informations additionnelles Je l'ai fait de cette façon maintenant. Cela ne fera que cliquer une fois, mais le bouton est toujours activé. Je pense que cela est ok:

 int count; 

     for (count = 0; count < 5; count++) 
     { 
      string newItem = "This is count: " + count; 
      if (listBox1.Items.IndexOf(newItem) < 0) 
      { 
       listBox1.Items.Add(newItem); 
      } 
     } 

     const string textEnd = "Done!!!"; 
     if (listBox1.Items.IndexOf(textEnd) <0) 
     { 
      listBox1.Items.Add(textEnd); 
     } 
+0

suggestion: déclarer en compte et utiliser ++ pour increment: pour (int count = 0; count <5; count ++) ... –

Répondre

1

Je suppose que vous ne voulez pas les mêmes éléments ajoutés à la liste plusieurs fois?

Au lieu de

{ 
    listBox1.Items.Add("This is count: " + count); 
} 

Vous avez besoin quelque chose comme

{ 
    string newItem = "This is count: " + count; 
    if(listBox1.Items.IndexOf(newItem) < 0) 
    { 
     listBox1.Items.Add(newItem); 
    } 
} 
+0

Salut Binaire qu'est-ce que cette ligne signifie: if (listBox1.Items.IndexOf (newItem) <0)? – tintincutes

+0

C'est pour vérifier si l'Item (String) est déjà dans la liste ... – Xn0vv3r

+0

ok merci.J'ai aussi vu que quand j'ai écrit string textEnd, ça me donne des suggestions que je peux aussi rendre constantes. Y at-il une différence? Si j'écris juste la chaîne textEnd avec la chaîne const textEnd? Il suffit de rencontrer ce "const" Je sais que je ne peux pas le changer mais quel est le but? – tintincutes

4
button1.Enabled = false; 
+0

c'est aussi une bonne idée. Merci Mehrdad ;-) – tintincutes

0

En cas de clic, ajoutez button1.Enabled = false

Et peut-être, après la boucle, vous pouvez ajouter button1.Enabled = true à réactivez le bouton. :)

+0

salut Ian où dois-je mettre le button1.Enabled = false? serait-ce sur la première ligne de mon code? qu'en est-il du bouton1.Enabled = true? après la boucle serait après le bloc de const string textEnd? Est-ce correct? – tintincutes

0

Vous pouvez simplement utiliser un simple 'drapeau' pour déterminer si la boucle a déjà exécuté.

Créer une variable globale par exemple bool HasRun = false;

vérifier ensuite l'état du drapeau avant d'exécuter la boucle par exemple si HasRun == true

Set HasRun true lorsque vous exécutez la boucle.

Enfin, vous pouvez également désactiver le bouton lors de la première exécution par exemple button1.Enabled = false;

+0

bonjour geoff, hmm désolé je ne comprends pas ce que "drapeau" signifie ici. Peut-être que je ne l'ai pas encore appris. Juste appris C# ;-) – tintincutes

0

Si ce n'est pas trop d'éléments, vous pouvez toujours effacer la liste avant d'ajouter les éléments.

listbox1.Items.Clear(); 
...your adding code... 

Mais la meilleure solution est probablement de désactiver le bouton, comme l'a écrit Ian.

+0

où devrais-je ajouter cette listBox1.Items.Clear()? – tintincutes

+0

En tant que première ligne de la méthode qui remplit la zone de liste, comme dans votre exemple, avant le "nombre entier"; ligne. Je suppose que vous essayez d'éviter beaucoup de doublons dans la liste. – kaze

+0

oui kaze J'évite un doublon. – tintincutes

0

meilleur est ce que dit Ian Cependant, vous pouvez aussi cacher le bouton complètement en exécutant l'une des commandes folowing

button.Hide(); 

Ou

button.Visable = false; 
Questions connexes