Як відкрити друге вікно з першого вікна в WPF?


125

Я новачок у WPF. У мене є два вікна, такі як window1 та window2. У мене одна кнопка у window1. Якщо я натисну цю кнопку, вікно2 має відкритися. Що мені робити для цього?

Ось код, який я спробував:

window2.show();

Відповіді:


237

Введіть свій код у window1.

private void Button_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}

Чи можу я написати цей рядок на Window_Loaded події? Якщо так, то друге вікно не відображається.
— Manish Dubey

37

Коли ви створили нову програму WPF, ви повинні мати .xaml файл та .cs файл. Вони представляють ваше головне вікно. Створіть додатковий .xaml-файл та .cs-файл, щоб представити своє підпрозоре вікно.

MainWindow.xaml

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="Open Window" Click="ButtonClicked" Height="25" HorizontalAlignment="Left" Margin="379,264,0,0" Name="button1" VerticalAlignment="Top" Width="100" />
    </Grid>
</Window>

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void ButtonClicked(object sender, RoutedEventArgs e)
    {
        SubWindow subWindow = new SubWindow();
        subWindow.Show();
    }
}

Потім додайте необхідний додатковий код до цих класів:

SubWindow.xaml
SubWindow.xaml.cs

15
досить просто! Я ненавиджу wpf, він просто настільки марно складний і розроблений, щоб протидіяти інтуїтивності.
— Ren

17
private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}

5

Припускаючи, що друге вікно визначено як public partial class Window2 : Window, ви можете це зробити:

Window2 win2 = new Window2();
win2.Show();

я хочу відкрити window2 з window1.
— АШОК

5

Це допомогло мені: метод Власник в основному пов'язує вікно з іншим вікном, якщо ви хочете зайві вікна з тими ж.

LoadingScreen lc = new LoadingScreen();
lc.Owner = this;
lc.Show();

Розглянемо це також.

this.WindowState = WindowState.Normal;
this.Activate();

5

У WPF у нас є пара варіантів за допомогою методів Show () та ShowDialog ().

Ну, якщо ви хочете закрити відкрите вікно, коли відкриється нове вікно, тоді ви можете скористатися методом Show ():

Window1 win1 = new Window1();
win1.Show();
win1.Close();

ShowDialog () також відкриває вікно, але в цьому випадку ви не можете закрити раніше відкрите вікно.


2

Вам потрібно буде створити екземпляр нового вікна, як це.

var window2 = new Window2();

Отримавши примірник, ви можете використовувати метод Show () або ShowDialog () залежно від того, що ви хочете зробити.

window2.Show();

або

var result = window2.ShowDialog();

ShowDialog () поверне a, Nullable<bool>якщо вам це потрібно.


2

Ви можете створити кнопку у window1 та двічі клацнути по ній. Це створить новий обробник кліків, де всередині ви можете написати щось подібне:

var window2 = new Window2();
window2.Show();

2

Ви можете використовувати цей код:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.