Andere Form nur ausführen, wenn diese nicht schon aktiv ist -> dann Fokus auf diese

  • WPF

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von DaNeubi.

    Andere Form nur ausführen, wenn diese nicht schon aktiv ist -> dann Fokus auf diese

    Hallo Leute,

    folgendes:
    Ich möchte per Button klick auf meinem "MainWindow" das "SettingsWindow" aufrufen.
    Jedoch, wenn man schonmal auf den Button geklickt hat, soll sich das Fenster nicht unendlich oft öffnen lassen, sondern der Fokus auf dieses Fenster gehen.

    Ich habs mit ner If Abfrage probiert, jedoch ohne Erfolg.

    C#-Quellcode

    1. settings_window settings_window = new settings_window();
    2. if (!settings_window.IsVisible)
    3. {
    4. settings_window.Show();
    5. }
    6. else
    7. {
    8. settings_window.Focus();
    9. }

    Mir würde auch schon ein Link zum Themenbereich helfen.

    Danke im vorraus

    DaNeubi
    Du erstellst ja ein Objekt / eine Instanz der SettingsWindow Klasse, demzufolge musst du nicht auf die Klasse settings_window zugreifen, sondern auf deine bereits erstellte Instanz.

    Das solltest du wie hier beschrieben anstellen können.

    EDIT: @DaNeubi Link aktualisiert, war der falsche, sry.
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Acr0most“ ()

    Acr0most schrieb:

    Du erstellst ja ein Objekt / eine Instanz der SettingsWindow Klasse, demzufolge musst du nicht auf die Klasse settings_window zugreifen, sondern auf deine bereits erstellte Instanz.


    Ich benötige irgendetwas, mit dem ich auslesen kann ob die Form "zu sehen", für den Benutzer, ist oder nicht.
    Mit IsVisible, IsFocusable, IsActive, IsEnabled, IsHittestVisible und Is Initialized geht das anscheinend nicht.

    C#-Quellcode

    1. ​private void find(object sender, RoutedEventArgs e)
    2. {
    3. foreach(Window window in Application.Current.Windows)
    4. {
    5. if(window.GetType() == typeof(window2))
    6. {
    7. window.Topmost = true;
    8. }
    9. }
    10. }


    sollte funzen :)

    VG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    @Acr0most Danke habs geschafft.

    C#-Quellcode

    1. private settings_window setting_swindow { get; } = new settings_window();
    2. private void button_settings_Click(object sender, RoutedEventArgs e)
    3. {
    4. if (!setting_swindow.IsVisible)
    5. {
    6. setting_swindow.Show();
    7. }
    8. else
    9. {
    10. setting_swindow.Focus();
    11. }
    12. }