Im ActionListener auf die Form zugreifen
-
Wir haben vor, dass wenn man auf einen Button klickt er in den ActionListener reingeht und sich dort ein Array mit Points(Knoten) holt und an diese Koordinaten eine CheckBox setzt. Hier der Code:
private: System::Void bauen_Click(System::Object^ sender, System::EventArgs^ e) { Form^ test = this->FindForm(); Benutzer^ benutzer = Runde::akt_runde->akt_Benutzer; //Array mit allen Knoten array<Knoten^>^ knoten = Bauen::getPos_Siedlungen(); for (int i = 0; i < 96; i++){ if( knoten[i]->getVerwendbar() ){ this->checkBox1 = gcnew CheckBox(); //MessageBox::Show("Hallo"); this->checkBox1->AutoSize = true; //checkBox1->Height //checkBox1->Width Point^ punkt1 = knoten[i]->getKCoord(); //-8 ist die Breite und Höhe der CheckBoxen //Diese sollten optisch in der Mitte des Knoten sein this->checkBox1->Location = Point(punkt1->X - 8, punkt1->Y - 8); this->checkBox1->Name = L"checkBox1"; this->checkBox1->UseVisualStyleBackColor = true; this->checkBox1->Visible = true; this->Controls->Add(checkBox1); } } }
-
Wir haben vor, dass wenn man auf einen Button klickt er in den ActionListener reingeht und sich dort ein Array mit Points(Knoten) holt und an diese Koordinaten eine CheckBox setzt.
Viel Erfolg!
-
ähhh? Danke für die tolle Hilfe...
-
Was erwartest Du denn ?
Du erzählst uns was ihr vor habt und klatschst dann ein Codestück hin. Du wirst Dir schon die Arbeit machen müssen einen vernünftigen Post zu schreiben wenn Du vernünftige Antworten haben willst. Für die Faulheit die der Post zeigt wird sich vermutlich niemand um eine Lösung bemühen.
-
Ja was soll man denn dan och groß schreiben ? Der Algo geht nicht, weil er die CheckBoxen nicht anzeigt.
-
Catan2 schrieb:
Ja was soll man denn dan och groß schreiben ?
ggf. die Fehlermeldungen die kommen.
Catan2 schrieb:
Der Algo geht nicht, weil er die CheckBoxen nicht anzeigt.
Ein Objekt "CheckBox" muss doch erst erstellt werden, du greifst darauf aber schon zu als ob der Schon existiert, Objekte werden nach folgender Syntax erstellt:
Objekt ^Variable = gcnew Objekt;
In diesem Beispiel würde es so aussehen:
CheckBox ^CheckBox1 = gcnew CheckBox;
Hier der Komplette Code:
private: System::Void bauen_Click(System::Object^ sender, System::EventArgs^ e) { Form^ test = this->FindForm(); Benutzer^ benutzer = Runde::akt_runde->akt_Benutzer; //Array mit allen Knoten array<Knoten^>^ knoten = Bauen::getPos_Siedlungen(); for (int i = 0; i < 96; i++){ if( knoten[i]->getVerwendbar() ){ CheckBox ^checkBox1 = gcnew CheckBox; //MessageBox::Show("Hallo"); checkBox1->AutoSize = true; //checkBox1->Height //checkBox1->Width Point^ punkt1 = knoten[i]->getKCoord(); //-8 ist die Breite und Höhe der CheckBoxen //Diese sollten optisch in der Mitte des Knoten sein checkBox1->Location = Point(punkt1->X - 8, punkt1->Y - 8); checkBox1->Name = L"checkBox1"; checkBox1->UseVisualStyleBackColor = true; checkBox1->Visible = true; this->Controls->Add(checkBox1); } } }
Das müsste jetzt soweit stimmen (wenn der Rest des Code in Ordnung ist)
Gruß
Rudi G
-
Funktioniert leider auch nicht, fehlt evtl. eine Update Funktion der Form o.ä ?
Bin allerdings sowieso am überlegen die Erstellung der Checkboxen/PictureBoxen in der Form_Load zu realisieren und einfach die Sichtbarkeit in dem Button_Click-Event zu steuern.
Ob das so klappt wie ich es mit vorstelle wird sich zeigen
Dennoch vielen Dank für deinen Tipp
-
Catan2 schrieb:
Funktioniert leider auch nicht, fehlt evtl. eine Update Funktion der Form o.ä ?
Find ich etwas seltsam denn bei mir wird das Element eingefügt auch wenn ich nichts "update", bist du dir sicher das das Programm bis dahin kommt? (das die Bedingung etc. zutreffen?)
Ansonsten versuch mal nach dem Code
this->Controls->Add(checkBox1);
folgendes einzugeben:
this->Refresh(); //oder auch einfach nur Refresh();
Catan2 schrieb:
Bin allerdings sowieso am überlegen die Erstellung der Checkboxen/PictureBoxen in der Form_Load zu realisieren und einfach die Sichtbarkeit in dem Button_Click-Event zu steuern.
Ob das so klappt wie ich es mit vorstelle wird sich zeigen
Dennoch vielen Dank für deinen Tipp
Dann laß mal hören wie du es umgesetz hast
Gruß
Rudi G