Ik ben bezig met een programma in C#. Een onderdeel hiervan is is dat er een aantal labels op mijn form gevuld worden met een random woord uit een array. De array in kwestie is words.
Ik wil echter niet dat hetzelfde woord meerdere keren wordt weergegeven. Per label waar een woord in moet worden gezet moet het volgende worden gedaan:
1. Woord bepalen (dit is string word) - dit gaat goed
2. Alle labels die van toepassing zijn (die Word in de naam hebben) moet nagekeken worden (elk label nagaan)
-> Komt de string uit de array overeen met de string in het label, dan moet er een nieuw woord gekozen worden (dus methode opnieuw, toch?)
-> Komt de string uit de array niet overeen met de string in het label (als 'ie leeg is of opnieuw hier aankomt), dan moet die string in het label gezet worden
Het probleem is nu echter dat ik toch hetzelfde woord twee keer te zien kan krijgen en dit komt ook voor. Wat doe ik fout?
**edit**
Het else statement onderaan moet weg. Ik weet niet waarom ik dit nog niet heb geprobeerd, maar het is dus opgelost. TR is aangemaakt
Ik wil echter niet dat hetzelfde woord meerdere keren wordt weergegeven. Per label waar een woord in moet worden gezet moet het volgende worden gedaan:
1. Woord bepalen (dit is string word) - dit gaat goed
2. Alle labels die van toepassing zijn (die Word in de naam hebben) moet nagekeken worden (elk label nagaan)
-> Komt de string uit de array overeen met de string in het label, dan moet er een nieuw woord gekozen worden (dus methode opnieuw, toch?)
-> Komt de string uit de array niet overeen met de string in het label (als 'ie leeg is of opnieuw hier aankomt), dan moet die string in het label gezet worden
Het probleem is nu echter dat ik toch hetzelfde woord twee keer te zien kan krijgen en dit komt ook voor. Wat doe ik fout?
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| private void FillWords() { r = new Random(); words = File.ReadAllLines(Application.StartupPath + @"\words.txt"); foreach (Control c in Controls) { if (c is Label && c.Name.Contains("Word")) { c.Text = GetWord(); } } } private string GetWord() { int index = r.Next(words.Length); string word = words[index]; foreach (Control control in this.Controls) //elk label nagaan { if (control is Label) { if (control.Name.Contains("Word") && control.Text == word) //komt het woord voor (niet goed) { word = GetWord(); //opnieuw methode uitvoeren (nieuw woord halen) } if (control.Name.Contains("Word") && control.Text != word) //komt het woord niet voor (is goed) { //niks } } else { break; //uit de foreach loop gaan } } return word; //is klaar } |
**edit**
Het else statement onderaan moet weg. Ik weet niet waarom ik dit nog niet heb geprobeerd, maar het is dus opgelost. TR is aangemaakt
AMD 2700x @ 4.15 GHz | Vega 56 (Vega 64 BIOS) | 32 GB DDR4 | MSI X470 Gaming Plus | Intel 600P 1TB | Corsair RM550X