[C# ]If Schleife abfragen ob andere Form offen ist?

2 Antworten

Nur als Info if ist keine Schleife.

Kommt drauf an was du mit anderer Form meinst. Wenn du im selben Programm meinst ja Forms haben eine Eigenschaft wo du abfragen kannst ob diese Sichtbar sind oder nicht.

Wenn du mit Form ein anderes Programm meinst ja geht auch nur musst du das OS fragen ob ein Prozess mit dem Namen offen ist.


XHyperDEVX 
Fragesteller
 18.12.2021, 22:05

Ja, eine Form innerhalb des selben Programms. Wie frage ich die Eigenschaft ab?

0
PeterKremsner  19.12.2021, 00:11
@XHyperDEVX

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.form?view=windowsdesktop-6.0

Hier siehst du alle Methoden und Eigenschaften der Form Klasse.

Wenn du hier bei den Properties durchschaust wirst du die Property Visible finden, die true ist wenn das Form sichtbar ist und false wenn nicht.

Ansonsten kannst du dir natürlich auch eine entsprechende Methode bauen wie es Zahhak beschrieben hat, je nachdem ob dir die Visible Eigenschaft reicht oder nicht. Besser ist es aber immer zuerst die zur Verfügung stehenden Methoden und Eigenschaften zu nutzen denn genau für solche Sachen sind sie ja da.

0

Indem du der Klasse der Form, deren Offen-Status du überprüfen willst diesen Code hinzufügst

private static int nopen = 0;
public static bool IsOpen => nopen > 0;

protected override void OnShown(EventArgs e) {
    base.OnShown(e);
    ++nopen;
}

protected override void OnFormClosed(FormClosedEventArgs e) {
    base.OnFormClosed(e);
    --nopen;
}

und den Status dann an der gewünschten Stelle mit

if(MeineFormKlasse.IsOpen){
    //Mindestens eine Instanz der Form ist offen
}

überprüfst.

Wenn allerdings es darum gehen sollte, zu überprüfen, ob eine bestimmte Instanz der Klasse offen ist, dann könntest du das nehmen:

public bool IsOpen {get; private set;}

protected override void OnShown(EventArgs e) {
    base.OnShown(e);
    IsOpen = true;
}

protected override void OnFormClosed(FormClosedEventArgs e) {
    base.OnFormClosed(e);
    IsOpen = false;
}

P.S.: Vermeide es von "If Schleifen" zu sprechen, die Dinger gibt's nämlich nicht.