如何从WPF中的第一个窗口打开第二个窗口?

ASH*_*K A 114 c# wpf

我是WPF的新手.我有两个窗口,例如window1和window2.我在window1中有一个按钮.如果我单击该按钮,则必须打开window2.我该怎么办?

这是我试过的代码:

window2.show();
Run Code Online (Sandbox Code Playgroud)

Cha*_*u A 212

写下你的代码window1.

private void Button_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
    this.Close();
}
Run Code Online (Sandbox Code Playgroud)

  • 在任何窗口加载事件中放置`this.Close()`可能不是一个好主意. (18认同)

小智 35

您将需要创建一个新的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>
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml.cs

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

    private void ButtonClicked(object sender, RoutedEventArgs e)
    {
        SubWindow subWindow = new SubWindow();
        subWindow.Show();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后为这些类添加所需的其他代码:

SubWindow.xaml
SubWindow.xaml.cs
Run Code Online (Sandbox Code Playgroud)

  • 除了那是错的.您不需要新的整个应用程序.只是一个新窗口. (22认同)
  • 够简单!我讨厌wpf,它是如此无用的复杂,并设计为反直觉. (10认同)

KF2*_*KF2 17

private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
Run Code Online (Sandbox Code Playgroud)


Vla*_*rov 5

假设将第二个窗口定义为public partial class Window2 : Window,则可以通过以下方法进行操作:

Window2 win2 = new Window2();
win2.Show();
Run Code Online (Sandbox Code Playgroud)


use*_*377 5

在WPF中,我们使用Show()和ShowDialog()方法有两个选项.

好吧,如果你想在新窗口打开时关闭打开的窗口,那么你可以使用Show()方法:

Window1 win1 = new Window1();
win1.Show();
win1.Close();
Run Code Online (Sandbox Code Playgroud)

ShowDialog()也会打开一个窗口,但在这种情况下,您无法关闭以前打开的窗口.


小智 5

这对我有帮助:Owner方法基本上将窗口绑定到另一个窗口,以防你需要额外的窗口和相同的窗口.

LoadingScreen lc = new LoadingScreen();
lc.Owner = this;
lc.Show();
Run Code Online (Sandbox Code Playgroud)

考虑一下.

this.WindowState = WindowState.Normal;
this.Activate();
Run Code Online (Sandbox Code Playgroud)