【问题标题】:How do I open a second window from the first window in WPF?如何从 WPF 中的第一个窗口打开第二个窗口?
【发布时间】:2020-02-05 06:53:03
【问题描述】:

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

这是我试过的代码:

window2.show();

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    将您的代码写入window1

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

    【讨论】:

    • 我可以在 Window_Loaded 事件上写下这一行吗?如果是这样,那么第二个窗口不会显示。
    【解决方案2】:

    创建新的 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
    

    【讨论】:

    • 够简单!我讨厌 wpf,它是如此无用的复杂并且旨在反直觉。
    【解决方案3】:
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        window2 win2 = new window2();
        win2.Show();
    }
    

    【讨论】:

      【解决方案4】:

      假设第二个窗口被定义为public partial class Window2 : Window,你可以这样做:

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

      【讨论】:

      • 我想从window1打开window2。
      【解决方案5】:

      这对我有帮助: Owner 方法基本上将窗口与另一个窗口联系起来,以防您需要具有相同窗口的额外窗口。

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

      也考虑一下。

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

      【讨论】:

        【解决方案6】:

        在 WPF 中,我们有几个使用 Show() 和 ShowDialog() 方法的选项。

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

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

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

        【讨论】:

          【解决方案7】:

          您需要像这样创建一个新窗口的实例。

          var window2 = new Window2();
          

          拥有实例后,您可以根据自己的需要使用Show()ShowDialog() 方法。

          window2.Show();
          

          var result = window2.ShowDialog();
          

          如果需要,ShowDialog() 将返回 Nullable&lt;bool&gt;

          【讨论】:

            【解决方案8】:

            您可以在 window1 中创建一个按钮并双击它。它将创建一个新的点击处理程序,您可以在其中编写如下内容:

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

            【讨论】:

              【解决方案9】:

              您可以使用此代码:

              private void OnClickNavigate(object sender, RoutedEventArgs e)
              {
                  NavigatedWindow navigatesWindow = new NavigatedWindow();
                  navigatesWindow.ShowDialog();
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-12-06
                • 2014-06-18
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多