Как закрыть скрытое окно (приложение WPF)? - PullRequest
0 голосов
/ 28 января 2012

В моем приложении (WPF) у меня есть это окно:

public partial class Window1 : Window и в Xaml x:Class="WpfApplication1.Window1"

Теперь, когда я переключаюсь из основного в окно 1 и обратно, я использую Visibility.Hidden и Visibility.Visible, чтобы скрыть их и заставить их снова показываться пользователю.

Что я пытаюсь сделать сейчас, так это сделать кнопку тестирования в главном окне, которая говорит: Закрыть окно1. Это окно скрыто, но я действительно хочу закрыть его на заднем плане. сначала я просто хотел использовать Window.Close();, но, похоже, это не сработало.

Итак, как мне сделать это правильно? Заранее большое спасибо.

РЕДАКТИРОВАТЬ 1 - сделать вопрос более понятным

Чтобы открыть window1 в моем главном окне, я использую эту часть

Window1 W1 = null; // Initialise Field.
  public void CalcTabel_Click(object sender, RoutedEventArgs e)
   {
    if (W1 == null)
    {
     W1 = new Window1();
     W1.Hoofdmenu = this;
     W1.checkLang();
     W1.Show();
    }
   else
    {
     W1.checkLang();
     W1.Visibility = Visibility.Visible;
    }
   this.Visibility = Visibility.Hidden;
   }

В окне 1 есть кнопка «Назад», в которой есть этот фрагмент кода (где «Hoofdmenu» - главное окно):

Hoofdmenu.updateStatistics();
Hoofdmenu.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;

Но опять же, на этот раз когда вы стоите в главном окне (поэтому окно 1 скрыто) Я хочу закрыть это окно 1. Но использование W1.Close(), похоже, не работает. Поэтому я ищу способ закрыть это окно 1, , а не изменить его видимость.

РЕДАКТИРОВАТЬ 2 - Решение

Таким образом, использование W1.Close(); сработало , не сработало, хотя небольшое изменение this.W1.Close(); действительно сработало:)

Ответы [ 2 ]

1 голос
/ 28 января 2012

Вы можете создать объект Form2 в окне и установить его видимость в false.

При нажатии кнопки вы можете просто сказать

public partial class MainWindow : Window
  {
    private Window1 window2;

    public MainWindow()
    {
      InitializeComponent();
      this.window2 = new Window1();

      this.window2.Show();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
      this.window2.Visibility = System.Windows.Visibility.Hidden;
    }
  }

чтобы сделать его снова видимым

0 голосов
/ 28 января 2012

после прочтения вашего кода, это не так, как вы этого хотите. Экземпляр window1 является локальным объектом. так что вы не можете достичь этого, если этот метод. лучше всего было бы иметь кнопку закрытия на window1 с this.close () или вы создаете глобальный экземпляр в главном окне, а затем проверяете, не является ли оно пустым, затем закрываете его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...