Mehrere Textboxes ansprechen



  • Hallo allerseits,

    ein paar kommilitoninnen und ich wollen ein Sudoku-Programm schreiben.
    ALs Oberfläche vewenden wir WinForms und haben erst einmal 81 textfelder darauf angelegt, die wir entsprechende der Zeile/Spalte benannt haben; Textbox11, Textbox12; Textbox21; Textbox22 etc..
    Auf diese Textboxen wollten wir per Schleife zugreifen mit (z.B.) this->textBoxXY->clear() ... so ist jedenfalls der Plan.

    Gibt es in c++ eine Möglicheit, den Namen einer Textbox, wie bspw. in VB, aus mehreren Variablen (also "textBox", x und y) zusammenzusetzen?
    Wir (ich) bekommen es zumindest nicht hin; vielleicht gibt es ja aber noch eine andere Variante, als alle Textboxen einzeln aufzurufen... 😕



  • Du könntest ja ein 2 Dimensionales Array mit Referenzen auf die Textboxes anlegen. Dann kannst du die auch alle ansprechen.

    Aber bestimmt geht da auch was mit Reflection, nur wie genau weiß ich auch grade nicht ^^

    BR



  • Wenn Du die TextBox über die Designer-Oberfläche anlegst, ist dies schwer möglich. Wenn Du diese dynamisch beim Programmstart anlegst, geht es einfacher... dann kannst Du einfach ein 2-Dim Array mit den Textboxen anlegen.

    Wenn es via Designer gemacht wurde kannst Du es natürlich immer via Reflection abfragen oder von "Hand" in das 2-Dim Array eintragen...



  • Eine ganze Weile später melde ich mich wieder, da wir jetzt - alle sind aus dem Urlaub zurück - mit dem Projekt anfangen möchten.

    Ich verstehe nicht ganz, warum man per Designer erzeugt Textboxen nicht auch gleich bei der Generierung in ein Array eintragen lassen kann. Dafür müsste ich aber natürlich zunächst wissen, was für ein Array ich benötige. Ein Array der Form Zeiger auf Textboxes oder was? 😕

    Tut mir leid, meine Fragen sind total dämlich. Aber mit GUIs in tue ich mich in Java und C++ irgendwie verdammt schwer.



  • magifrei schrieb:

    Eine ganze Weile später melde ich mich wieder, da wir jetzt - alle sind aus dem Urlaub zurück - mit dem Projekt anfangen möchten.

    Ich verstehe nicht ganz, warum man per Designer erzeugt Textboxen nicht auch gleich bei der Generierung in ein Array eintragen lassen kann. Dafür müsste ich aber natürlich zunächst wissen, was für ein Array ich benötige. Ein Array der Form Zeiger auf Textboxes oder was? 😕

    Tut mir leid, meine Fragen sind total dämlich. Aber mit GUIs in tue ich mich in Java und C++ irgendwie verdammt schwer.

    Du brauchst dafür so ein array:
    array<TextBox^,2> ^ TextBoxVerweise = gcnew array<TextBox^,2>(9,9);

    BR
    Vinzenz



  • Danke, ich werde mal versuchen damit klar zu kommen.
    Habe jetzt folgendes mal in meinen Code übernommen:

    private: array<System::Windows::Forms::TextBox^,2>^ Spielfeld;
    

    und dann bei der Komponenteninitialisierung:

    this->Spielfeld = gcnew array<System::Windows::Forms::TextBox^,2>(9,9);
    

    Ich finde im Netz aber kein ähnliches Beispiel. Die obige Zeile generiert doch nur das Array, wenn ich das richtig verstehe. Ich muss also noch die einzelnen Textboxen generieren und meinem Spielfeld zuweisen, nur wie? Und wie genau kann ich die einzelnen Textboxen dann ansprechen?



  • array<TextBox^,2> ^ TextBoxVerweise = gcnew array<TextBox^,2>(9,9);
    

    Das war der entscheidende Tip, vielen Dank dafür evilissimo

    Hat mich zwar eine Menge Nerven gekostet, herauszufinden, was genau ich jetzt damit anzufangen habe. Wenigstens bin ich dadurch aber wieder halbwegs mit der Materie vertraut 😉


Anmelden zum Antworten