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...
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!
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
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!
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
hab es hinbekommen, musste ja nur in dem zweiten Form meinen Code schreiben der ausgeführt werden soll...
thx für eure mühen
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)
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
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.
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
nein ich glaub du liegst richtig, Form1 habe ich über die toolbox erstellt. (es ist mein hauptfenster für die anwendung)
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
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
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
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;
}
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...
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
Hallo burninglode,
wenn e.Cancel auf true gesetzt ist, wird das Fenster gerade nicht geschlossen.
herbivore
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!”
@ herbivore
dickes fettes danke! da hätte ich ja noch lange probieren können...
thx