Forum: PC-Programmierung On_Click Ereigniss auf einer anderen Form abfragen


von Nussknacker (Gast)


Lesenswert?

Hallo,

ich habe eine Frage. Ich habe 2 Forms in meinem VC++ .Net Projekt 
erstellt. Auf der Form 2 habe ich einen Button, der die Schließen soll.
Auf der anderen habe ich auch noch ein Button, der den anderen Button 
anclicken soll.

Also:

Pseudocode
1
if (Form2->Button1->Click)
2
{
3
   Form2->Close();
4
}

Wie macht man so etwas in VC++?

Ich würde mich sehr ber eine Antwort freuen,

Gruß

Nussknacker

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du musst nicht "abfragen", ob der Knopf angeklickt wird, sondern in 
dessen Eventhandler (dürfte OnClick oder so ähnlich heißen) den 
Schließbefehl einbauen.

von freshmeat (Gast)


Lesenswert?

hallo

Danke für deine Antwort, das mit dem Schließen hat geklappt, aber jetzt 
steht im Codeabschnitt des buttons nicht nur der Closebefehl:
1
serialPort1->baudrate = frm2->comboBox1->SelectedItem();
2
this->Close();

Das hier steht auch noch drin. Gibt es denn trotzdem noch eine 
möglichkeit abzufragen?
Kann mir einer einen tipp geben?

Danke,

freshmeat

von Karl H. (kbuchegg)


Lesenswert?

Du musst von deiner Abfragemanie loskommen.
In einem eventbasierten System fragst du nicht
die Buttons ab, ob sie gedrückt sind, sondern
die Buttons benachrichtigen dein Programm, dass
sie gedrückt wurden. Konkret: Beim Drücken eines
Buttons wird eine Funktion aufgerufen. In der musst
da alles handhaben was du brauchst.

Wenn du also 2 Forms hast ...

   Form1              Form2
   +------------+     +-------------+
   |            |     |             |
   |            |     |             |
   |            |     |             |
   |            |     |             |
   |            |     |             |
   +------------+     +-------------+

... und die eine Form, Form1, möchte etwas von der anderen
Form, Form2, dann teilt sie dies der anderen Form mit, indem
sie eine Funktion dieser Form aufruft.

Diese Funktion könnte zb. das Schliessen der Form2 veranlassen
(und auch sonst noch andere Dinge tun).



   Form1              Form2
   +------------+     +-------------+
   |            |     |             |
   |            |     |             |
   |            |     |             |
   |            |     |  +---------+|
   |            |     |  | close   ||
   +------------+     +-------------+


Ob diese Funktion jetzt als Reaktion auf einen Buttondruck in
Form2 aufgerufen wird oder ob diese Funktion von der Form1 aus
aufgerufen wird, ist aber der Funktion völlig egal.

von Karl H. (kbuchegg)


Lesenswert?

Die Aufrufkette kann also zb. so aussehen:

   Form1              Form2
   +------------+     +-------------+
   |+>OnClick   |     |+>OnClick    |
   ||    |      |     ||    |       |
   ||    |      |     ||    v       |
   ||    +-------------->+-DoClose-+|
   ||           |     || | close   ||
   +|-----------+     +|------------+
    |                  |
    |                  |
    |                  |
   Button auf Form1   Button auf Form2

Wird der Button auf Form2 gedrückt, so wird als Folge
davon der zugehörige OnClick Handler in Form2 aufgerufen.
In diesem Handler wird dann wieder als Konsequenz eine
weitere Funktion der Form2 aufgerufen, die macht was immer
du willst (zb. Baudrate sichern, Festplatte formatieren,
Form schliessen9.

Wird hingegen der Button auf Form1 gedrückt, so wird als
Folge davon der zugehörige OnClick Handler in Form1 aufgerufen.
In diesem Handler wird dann besagte Funktion der Form2 aufgerufen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.