Як відкрити друге вікно з першого вікна в 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.