Name einer Picture Box in Variable speichern
-
Heyho,
Ich bin neu hier und habe gleich mal eine Frage, welche ich durch die Suchfunktion nicht beantwortet bekam.
Ich habe eine Windows Forms Anwendung mit Visual C++ 2005 gestartet und dann 2 PictureBoxes und 1 Button erstellt. Jetzt wollte ich wissen, wie es geht, dass man Wenn man eine PictureBox anklickt, man den Name der PictureBox in einer Variable Speichern kann.
Danke für die Hilfe,
manyou
-
So würde ich das machen....
Den Code unter
public ref class Form1 : public System::Windows::Forms::Form
{einfügen...
Form1.h
public ref class Form1 : public System::Windows::Forms::Form { String^ _welchePictuerBox;//Variable vereinbaren: property String ^wishBox //Wegen der Datenkapselung Property erstellen: { void set(String^ _wert) { _welchePictuerBox = _wert; } String^ get() { return "Komme aus Property \"wishBox\" " + _welchePictuerBox; } }
Noch immer Form1.h
Variable initialisieren:
Code unter TODO:... einfügen:public: Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // _welchePictuerBox = String::Empty;//Variable initialisieren: }
Klick Event von pictureBox1 - Bitte das Klick-Event von pictureBox2 auch auf dieses Event unter pictureBox2->Eigenschaften->Ergnisse legen...
private: System::Void pictureBox1_Click(System::Object^ sender, System::EventArgs^ e) { PictureBox^ _picture = static_cast<PictureBox^>(sender); wishBox::set(_picture->Name); this->Text::set(wishBox::get()); }
Hier das Beispiel, mit Codetrennung -> cpp...
http://www.rb-softarticle.com/pictuerBoxProject.rar
Gruß,
Doug_HH
-
Danke für die ausführliche Hilfe und Beschreibung.
Es hat funktioniert.Ich habe noch eine Frage.
Kann man folgenden Code auch mit einer for-Schleife Schreiben?private: System::Void pictureBox1_Click(System::Object^ sender, System::EventArgs^ e) { //Ereigniss } private: System::Void pictureBox2_Click(System::Object^ sender, System::EventArgs^ e) { //Ereigniss } private: System::Void pictureBox3_Click(System::Object^ sender, System::EventArgs^ e) { //Ereigniss } ...
Ich hab mir dass so ca. überlegt, aber das geht nicht:
int i; for(i=0;i<10;i++){ private: System::Void pictureBox+i_Click(System::Object^ sender, System::EventArgs^ e) { //Ereigniss } }
-
Hallo,
Kann man folgenden Code auch mit einer for-Schleife Schreiben?
Nein, so macht man das nicht. Lege statt dessen für jede Box die gleiche Klick-Ereignisfunktion fest, z.B. pictureBox1_Click. Dann kannst du sender nutzen, wie Doug_HH es schon mit dem Namen gezeigt hat, um zu entscheiden, welche Box den Klick "gesendet" hat.
MfG,
Probe-Nutzer
-
Ok danke für die Hilfe!
-
Wenn Du die pictureBoxen Dynamisch erstellen möchtest, könntest Du es in etwa so machen, Dein Code würde so nicht funzen.
Einfach melden wenn Du die Boxen Dynamisch erstellen willst.