Autor Beitrag
flya
Hält's aus hier
Beiträge: 4

Win XP
C#(Express 2005, VS 2003)
BeitragVerfasst: Mi 05.07.06 18:56 
Hallo!

ich habe hier ein etwas kompliziertes problem, ich hoffe ich kann das ordentlich erklären ;) wenn nicht, fragt ruhig.

also

ich habe ein textbox array gemacht, den einzelnen textboxen auch ihren text(jew. 1 zeichen) zugewiesen. dann habe ich das gesamte array unsichtbar gemacht und will nur die textboxen sichtbar machen, die einen gewissen string (1 zeichen) beinhalten. Das ganze soll natürlich automatisiert passieren.
(was noch wichtig sein könnte: die zu sichtbar machenden textboxen sind NICHT immer die selben, und haben nicht den selben inhalt. außerdem könnten es manchmal 1 oder 2 oder auch mehr sein, aber atm maximal 15!)

also nachdem ich verschiedenste schleifenkonstruktionen ausprobiert habe, bin ich im MSDN auf die methode foreach in der klasse array gestoßen. jedoch hat mich die syntax ziemlich verwirrt, weil ich noch nicht recht lange am coden bin.

ich habe das problem auch schon unzureichend gelöst (es wurden maximal 2 textboxen sichtbar, es sollten aber zT mehr sein).

ich hoffe ich hab mein problem verständlich rübergebracht. ansonsten könnt ich es auch des langen und breiten erklären oder auch das projekt irgendwo uploaden.

Danke schonmal

MfG

flya
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 05.07.06 21:41 
Erst einmal herzlich Willkommen :welcome: !
Was du suchst, ist nicht die Array.ForEach<T>-Methode (die für wirklich nicht für einen Anfänger gedacht ist), sondern die foreach-Schleife von C#: msdn2.microsoft.com/...ibrary/ttw7t8t6.aspx
flya Threadstarter
Hält's aus hier
Beiträge: 4

Win XP
C#(Express 2005, VS 2003)
BeitragVerfasst: Mi 05.07.06 22:58 
user profile iconKhabarakh hat folgendes geschrieben:
Erst einmal herzlich Willkommen :welcome: !
Was du suchst, ist nicht die Array.ForEach<T>-Methode (die für wirklich nicht für einen Anfänger gedacht ist), sondern die foreach-Schleife von C#: msdn2.microsoft.com/...ibrary/ttw7t8t6.aspx

Also erstmal danke für die antwort, aber
vielleicht ist es ja ein verständnisproblem meinerseits, denn mit foreach hab ich auch schon rumgespielt. das problem dabei ist, dass ich zwar für jeden string in dem array eines sichtbar machen kann, aber es wird dadurch nicht entschieden WELCHES Feld sichtbar werden soll, und das ist schon wichtig :(. wenns doch geht, klärt mich auf, wie gesagt stehe ich nicht weit vom anfang entfernt :D

Deshalb hab ich ja dann an die array funktionen gedacht... (die Suchfunktionen). leider hab ich gemerkt, dass diese nicht besser sind als die string funktionen (ist ja auch dasselbe -.-) und somit schied die Index-Methode aus. die foreach methode hab ich mir dann hald angesehen, die syntax versteh ich hald ned so ganz -.-

btw: eine kleine Denkhilfe: das ganze soll ein Hangman-Spiel werden. ich habe hald versucht es auf einfache weise zu realisieren (mit einem textbox array). darum ist auch die reihenfolge der boxes wichtig, sowie deren erscheinen an der richtigen stelle und - anzahl. (eine textbox = ein buchstabe - erschien mir am logischsten.)
bereits probiert hab ich die "suche" IndexOf um das auf stringebene zu lösen (weil ja index im string = index im array). da gibts aber nur maximal 2 (IndexOf, LastIndexOf) buchstaben/textboxes die erscheinen können (und die wörter anzupassen oder das ganze manuell zu machen erschien mir sinnlos). weitergemacht hab ich dann indem ich mithilfe einer for schleife raufgezählt hab um den startindex des IndexOf um jeweils 1en buchstaben zu verschieben -> programmabsturz -.- . eine while schleife ging auch nicht (keine indexierung).
natürlich gäbs andere möglichkeiten auch noch das programm zu realisieren, aber ich würd mal meine probieren.

wäre schön wenn noch jemand vorschläge hätte das textbox problem zu lösen :)

Danke für weitere hilfe(n)

MfG
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 06.07.06 13:00 
Sollen die Texboxen zur Eingabe des Lösungswortes dienen? Wenn ja, verstehe ich nicht, warum du sie je nach ihrem Inhalt ein- und ausblenden willst :gruebel: .
So könnte es jedenfalls zum Beispiel aussehen (das Unsichtbarmachen des ganzen Arrays ist schon mit integriert):
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
    static void ShowControlsWithSpecifiedText(IList<Control> controls, string text)
    {
      foreach (Control control in controls)
        control.Visible = control.Text == text;
    }
flya Threadstarter
Hält's aus hier
Beiträge: 4

Win XP
C#(Express 2005, VS 2003)
BeitragVerfasst: Do 06.07.06 14:21 
Danke nochmal, ich schau mir den code gleich an :)
die systematik sollte so aussehen:
man gibt den buchstaben den man raten will in eine klein textbox ein und klickt auf einen button. dann wird überprüft, ob die eingabe im wort vorkommt, wenn nein => msgbox.
da man ja das wort nicht sehen soll, werden die textboxen mit der generierung des wortes unsichtbar gemacht und das wort gleich eingefüllt.

ist also die eingabe richtig, sollte(n) die jeweilge(n) textbox(en) sichtbar werden. das funktioniert bei ein oder 2maligen vorkommen mit IndexOf (wie schon geschrieben), wenn aber 3 oder 4mal der selbe buchstabe vorkommt, kann man nimmer gewinnen ^^

MfG

flya

Edit:

Habs geschafft ;) zwar nicht mit foreach, aber mit for und if.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
for (int i = 0; i < gword.Length; i++) //gword ist die lösung,
        {
          if (entry == Characters[i].Text) //entry der eingegebene Text, Characters[] das Array
           {
             Characters[i].Visible = true;
           }
          else
             continue;
        }


aber wie gesagt trotzdem danke :D