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

时间:2012-06-21 08:05:39

标签: c# wpf

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

这是我尝试过的代码:

window2.show();

9 个答案:

答案 0 :(得分:196)

将您的代码写在window1

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

答案 1 :(得分:34)

您需要创建一个新的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

答案 2 :(得分:17)

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

答案 3 :(得分:5)

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

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

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

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

答案 4 :(得分:5)

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

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

考虑这一点。

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

答案 5 :(得分:3)

假设第二个窗口定义为public partial class Window2 : Window,您可以通过以下方式完成:

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

答案 6 :(得分:2)

您可以在window1中创建一个按钮,然后双击它。它将创建一个新的单击处理程序,在里面你可以写这样的东西:

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

答案 7 :(得分:2)

您可以使用此代码:

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

答案 8 :(得分:2)

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

var testnum=0;
var testTimer;

function test()
{
  alert(testnum);

  if(++testnum>10)
      clearInterval(testTimer);
}

function r_help2(rot_obj)
{
    //rot_obj.rotTimer = setInterval( function(){r_helper(rot_obj);}, 20);

    testTimer = setInterval(function(){test()},20);
}

function rotate(name, x,y)
{
var rot_obj={angle:0,lim:180};
rot_obj.img = new Image();
rot_obj.x = x;
rot_obj.y = y;
rot_obj.img.src = "rot_"+name+".png"; //rot_1.png, ...etc
rot_obj.img.addEventListener("load",function(){r_help2(rot_obj);});
}

获得实例后,您可以使用Show()ShowDialog()方法,具体取决于您要执行的操作。

var window2 = new Window2();

window2.Show();
如果您需要,

ShowDialog()将返回var result = window2.ShowDialog();

相关问题