Laden...

Program mit 2 Forms

Erstellt von burninglode vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.944 Views
B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren
Program mit 2 Forms

ich möchte aus einem bestehen windows form per mausklick auf einen button ein zweites fenster öffnen, hab dazu ein zweites form angelegt. nun weiss ich nicht welche funktion ich beim button-drücken aufrufen muss um das fenster zu öffnen...

E
109 Beiträge seit 2006
vor 17 Jahren

hi,

in der methode die vom event des buttons getriggert wird, erzeugst du das objekt der form und setzt das attribut visible auf true.

Form form2 = new Form();
form2.Visible = true;


gruß,
emmi

Es gibt keine Probleme - nur Herausforderungen!

B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

danke!

in dem neu geöffneten fenster habe ich ein axtiveX element eingebettet. dieses möchte ich nun ansprechen.(d.h. beim button-click parameter übergeben).
die entsprechenden funktion sind aber im Haupt-Form irgendwie nicht vorhanden...
über einen neuen button im erzeugten fenster funzt es...

please help

E
109 Beiträge seit 2006
vor 17 Jahren

ich versteh dein problem nicht so ganz.
du hast jetzt ein activex-element und was soll dann passieren?
willst du werte an die neue form übergeben?

Es gibt keine Probleme - nur Herausforderungen!

2.082 Beiträge seit 2005
vor 17 Jahren

Hallo burninglode,

dafür brauchst du in der Form2 eine public Methode. also z. B.

//Die Methode in Form2
public void SetLabelText(string aText) {
this.label1.Text = aText;
}

//In der Hauptform dann so aufrufen
Form2 myFrm = new Form2();
myFrm.SetLabelText("Hallo");

auf die Controls kannst du so nicht zugreifen ausser du machst einen foreach-loop durch myFrm.Controls und wertest diese dann aus.

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

hab es hinbekommen, musste ja nur in dem zweiten Form meinen Code schreiben der ausgeführt werden soll...

thx für eure mühen

B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

mein hauptfenster soll beim öffnen des zweiten fensters auf die taskleiste minimiert werden, was ja kein problem darstellt.
nun soll dieses hauptfenster beim schließen des zweiten fensters aus der taskleiste wiederhergestellt werden...

hat einer von euch ne gute idee wie ich das hinbekommen kann?
(ich habe versucht einen eventhandler für das schließen von fenster 2 zu erstellen, der beim schließen dann fenster 1 wiederherstellt, mir fehlt aber noch die funktion um auf fenster1 zugreifen zu können)

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo burninglode,

dein Ansatz ist gut. Dafür brauchst du aber gar nicht auf Form1 zuzugreifen. Durch Events findet ja gerade eine Entkoppelung statt und ein solcher Zugriff wird damit überflüssig.

herbivore

B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

hab das jetzt so probiert:


private void mainForm_FormNormal(object sender, FormClosingEventArgs e)
{
            e.Cancel = true;
            this.WindowState = FormWindowState.Normal;
        }

das geht noch nicht... wollte anstelle this.WindowState eigentlich sowas wie Form1.WindowState... schreiben das kennt er aber nicht.

2.082 Beiträge seit 2005
vor 17 Jahren

Hallo burninglode,

dafür müsste Form1 ja ein globales objekt sein, da du es wahrscheinlich in einer anderen Funktion mit Form1 form1 = new Form1(); erstell hast oder liege ich da falsch?

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

nein ich glaub du liegst richtig, Form1 habe ich über die toolbox erstellt. (es ist mein hauptfenster für die anwendung)

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo frisch,

hier muss und sollte nichts global sein.

Hallo burninglode,

this.WindowState ist genau richtig. Ist mainForm_FormNormal eine Methode von Form1? Sollte sie sein.

herbivore

B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

wie meinst du das? wenn ich die mainForm_FormNormal in Form 1 schreibe, dann reagiert doch der eventHandler nicht auf das schließen von form 2... sorry aber ich verstehs nicht... hat vielleicht einer ein kleines beispiel?

thx

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo burninglode,

der EventHandler gehört in Form1. Registrieren muss du ihn für den Event aus Form2 (am besten sofort, nachdem du Form2 erzeugt hast). Dann passt alles zusammen.

herbivore

27 Beiträge seit 2006
vor 17 Jahren

Hallo,
ich als noob würde das so machen (in Form1)


// beim öffnen der neuen Form
Form2 myFrm = new Form2();
myFrm.SetLabelText("Hallo");
myFrm.FormClosing += new FormClosingEventHandler(mainForm_FormNormal);
...

private void mainForm_FormNormal(object sender, FormClosingEventArgs e)
{
            e.Cancel = true;
            this.WindowState = FormWindowState.Normal;
}
B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

danke jungs das geht jetzt endlich!

einen haken hat die sache aber noch...
nachdem die MainForm wiederhergestellt wurde, bleibt die Form2 noch sichtbar, obwohl auf Cancel gedrückt wurde...

2.082 Beiträge seit 2005
vor 17 Jahren

Stelle bei der Form 2 als Cancel-Button deinen Button ein. Der liefert dann auch automatisch den DialogResult.Cancel zurück.

Denke das reicht, an sonsten legst du auf das event vom Button noch ein this.Close()

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo burninglode,

wenn e.Cancel auf true gesetzt ist, wird das Fenster gerade nicht geschlossen.

herbivore

4.506 Beiträge seit 2004
vor 17 Jahren

Hallo zusammen,

wenn e.Cancel auf true gesetzt ist, wird das Fenster gerade nicht geschlossen

da bin ich auch das erste mal reingefallen. Das "cancelled" mir so wie Herbivore schon geschrieben hat, nämlich das Schließen.

Ich bin damals auch zunächst davon ausgegangen, dass der Vorgang "Windows anzeigen" "gecancelled" wird, was aber bei genauerer Überlegung unsinnig erschent...

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

B
burninglode Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

@ herbivore

dickes fettes danke! da hätte ich ja noch lange probieren können...

thx