如何加载一个窗口2次后,彼此

本文关键字:2次 窗口 彼此 一个 何加载 加载 | 更新日期: 2023-09-27 17:49:50

我一直在寻找这个问题的解决方案,但我似乎找不到答案。

我有一个主窗口,我想从一个按钮加载"gameWindow"2次。我想在第一个窗口关闭后加载第二个窗口。

如果你能想象这个想法:

private void Action_Click(object sender, RoutedEventArgs e)
{
    if (blueTeamMap != null && redTeamMap != null)
    {
        GameWindow matchBlueTeam = new GameWindow(playersBlueTeam, playersRedTeam, blueTeamMap);
        matchBlueTeam.Show();
        while (matchBlueTeam != null)
        {
            // wait for window to resign
        }
        GameWindow matchRedTeam = new GameWindow(playersBlueTeam, playersRedTeam, redTeamMap);
        matchRedTeam.Show();
    }
}

如何加载一个窗口2次后,彼此

像这样编辑你的代码

//your code here.
//add event here
matchBlueTeam.FormClosed += FormName_FormClosed;
matchBlueTeam.Show();

添加事件处理程序:

private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
   //unregister first window from event
   ((GameWindow)sender).FormClosed -= FormName_FormClosed;
   if (blueTeamMap != null && redTeamMap != null)
   {
      //pop second window
      GameWindow matchRedTeam = new GameWindow(playersBlueTeam, playersRedTeam,     redTeamMap);
      matchRedTeam.Show();
   }
}

假设matchBlueTeam窗口关闭,GameWindowClosed事件,如:

private void Action_Click(object sender, RoutedEventArgs e)
{
    if (blueTeamMap != null && redTeamMap != null)
    {
        GameWindow matchBlueTeam = new GameWindow(playersBlueTeam, playersRedTeam, blueTeamMap);
        matchBlueTeam.Closed += (s,e) => { 
            GameWindow matchRedTeam = new GameWindow(playersBlueTeam, playersRedTeam, redTeamMap);
            matchRedTeam.Show();
        };
        matchBlueTeam.Show();
    }
}

您可以在window方法上请求ShowDialog()。然后等待窗口关闭。

Window1 w1 = new Window1();
w1.ShowDialog();
Window2 w2 = new Window2();
w2.ShowDialog();

或带有事件:

        //////Code    
        Window1 w1 = new Window1();
        w1.Closed += v_Closed;
        w1.Show();
    }

    void v_Closed(object sender, EventArgs e)
    {
        Window1 w1 = (Window1)sender;
        w1.Closed -= v_Closed;
        Window2 w2 = new Window2();
        w2.Show();
    }