Hallo!
Ich habe eine Applikation, welche aus mehreren Formularen besteht, die über Button-Clicks geöffnet werden. Allerdings öffnet sich dieses Formular bei einem weiteren Klick auf den Button erneut.
Code also z.B.:
private void B_Datum_Click(object sender, EventArgs e)
{
Form f = new F_Datum();
f.Show();
}
**Es müsste also eine Überprüfung stattfinden, ob das Formular F_Datum bereits geöffnet ist. ** (allerdings weiss ich nicht wie 😉 )
Die Möglichkeit, den Button nach Klick zu sperren entfällt, da dies vom Kunden nicht gewünscht ist und das Sperren der Buttons bereits eine andere Funktionalität der Applikation bereitsstellt.
über eine kurze Hilfe würde ich mich sehr freuen!
Gruß
PalPal
Ansonsten würde sich vielleicht ein Singleton anbieten.
q.e.d.
Hallo,
verwende statt f.Show(); einfach f.ShowDialog();
Das Formular mit dem Button ist dann gesperrt. Wäre das ok?
Gruß
Bugrick
foreach (Form F in Application.OpenForms) {
if ((F is F_Datum)) {
F.Show(); F.Fokus();
}
}
Das sollte es eigentlich auch tun.
Gruß
Danke für die Antworten!
ich arbeite es einfach mal kurz von oben nach unten ab:
und bei der Foreach-Schleife (@Equilibrium) tut sich leider nichts - also, das Formular wird nicht geöffnet.
Das Formular muss natürlich auch offen sein, sonst funzt es logischerweise nicht. Denn OpenForms liefert dir alle geöffneten Formulare zurück - d.h. du musst das nur in die Buttonfunktion mit reinpacken und dann entscheiden ob du ein neues Formular erzeugst oder das alte reaktivierst.
PS: die boolsche Variable is im grunde eh überflüssig denn openforms liefert dir ja bereits den status den du brauchst.
ich arbeite es einfach mal kurz von oben nach unten ab
Ok ich mach das mal auch:
was genau Singleton ist / wie es funktioniert weiss ich leider nicht 😃
Benutze die Forumssuche und Google. Du wirst viele Ergebnisse finden.
mit ShowDialog kann ich eventuell arbeiten.
Das macht genau das, was du nicht wolltest.
das Verwenden einer bool'schen Variable stelle ich mir in diesem Fall ein wenig schwer vor
Denke nochmals darüber nach. Das sind insgesamt 5 Zeilen Code. Was daran schwierig sein soll, entzieht sich meiner Vorstellungskraft.
und bei der Foreach-Schleife (@Equilibrium) tut sich leider nichts - also, das Formular wird nicht geöffnet.
Das ist so, wenn man einfach Code per Copy&Paste verwendet.
@Equilibrium:
Jain. wenn du den gleichen Typen unter Umständen öfters offen haben können musst, wird es mit deiner Methode umständlicher. Aber ansonsten hast du natürlich Recht.
Zusätzlich hier noch die Ermahnung, das sich dieses Thema nun haarscharf an der Kante zu [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1 bewegt.
Bitte beachte die Forumsregeln, sonst muss ich das Thema schließen.
@Equilibrium:
Jain. wenn du den gleichen Typen unter Umständen öfters offen haben können musst, wird es mit deiner Methode umständlicher. Aber ansonsten hast du natürlich Recht.
das ist klar, aber war ja hier nicht gefordert, es sollte ja immer nur eins offen sein.
Danke, ich habe mir nun aus der foreach-Schleife zusammen mit einer bool'schen Variable etwas gebastelt, sodass das Form nur geöffnet wird, wenn es nicht in Openforms steht und sonst das geöffnete focusiert wird.
Dass es Probleme gibt, die vermutlich simpel zu lösen sind, einen aber viel zu lange beschäftigen kennt bestimmt jeder 😃_
Wenn du die Foreach Variante verwendest, ist die Boolsche Variable nicht notwendig. Hierzu kann ich dir die schlüsselwörter continue und break ans herz 😃 legen. Diese machen die Boolsche Variable überflüssig.
- kann also geschlossen werden jetzt -
Wir schließen nur bei Regelverstößen.