Comment ouvrir une deuxième fenêtre à partir de la première fenêtre dans WPF?


125

Je suis nouveau sur WPF. J'ai deux fenêtres, telles que window1 et window2. J'ai un bouton dans window1. Si je clique sur ce bouton, la fenêtre 2 doit s'ouvrir. Que dois-je faire pour ça?

Voici le code que j'ai essayé:

window2.show();

Réponses:


237

Écrivez votre code window1.

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

Puis-je écrire cette ligne sur l'événement Window_Loaded? Si tel est le cas, la deuxième fenêtre ne s'affiche pas.
Manish Dubey

37

Lorsque vous avez créé une nouvelle application WPF, vous devez disposer d'un fichier .xaml et d'un fichier .cs. Ceux-ci représentent votre fenêtre principale. Créez un fichier .xaml et un fichier .cs supplémentaires pour représenter votre sous-fenêtre.

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();
    }
}

Ensuite, ajoutez le code supplémentaire dont vous avez besoin à ces classes:

SubWindow.xaml
SubWindow.xaml.cs

15
assez simple! Je déteste wpf, c'est tellement inutilement compliqué et conçu pour être contre-intuitif.
Ren

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

5

En supposant que la deuxième fenêtre est définie comme public partial class Window2 : Window, vous pouvez le faire en:

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

je veux ouvrir window2 à partir de window1.
ASHOK A

5

Cela m'a aidé: la méthode Owner lie essentiellement la fenêtre à une autre fenêtre au cas où vous voudriez des fenêtres supplémentaires avec les mêmes.

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

Considérez cela également.

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

5

Dans WPF, nous avons quelques options en utilisant les méthodes Show () et ShowDialog ().

Eh bien, si vous souhaitez fermer la fenêtre ouverte lorsqu'une nouvelle fenêtre s'ouvre, vous pouvez utiliser la méthode Show ():

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

ShowDialog () ouvre également une fenêtre, mais dans ce cas, vous ne pouvez pas fermer votre fenêtre précédemment ouverte.


2

Vous devrez créer une instance d'une nouvelle fenêtre comme ça.

var window2 = new Window2();

Une fois que vous avez l'instance, vous pouvez utiliser la méthode Show () ou ShowDialog () en fonction de ce que vous voulez faire.

window2.Show();

ou

var result = window2.ShowDialog();

ShowDialog () renverra un Nullable<bool>si vous en avez besoin.


2

Vous pouvez créer un bouton dans window1 et double-cliquer dessus. Cela créera un nouveau gestionnaire de clics, dans lequel vous pourrez écrire quelque chose comme ceci:

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

2

Vous pouvez utiliser ce code:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.