这是XAML代码:
<Application x:Class="WpfApplication2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup" />
支持代码:
using System.Windows;
namespace WpfApplication2
{
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
new Window().ShowDialog();
new Window().ShowDialog();
}
}
}
窗口只显示一次,然后应用程序退出。为什么?
更新:我知道窗户应该显示出来。但在我关闭第一个窗口后,第二个窗口没有显示
答案 0 :(得分:5)
试试这个
private void Application_Startup(object sender, StartupEventArgs e)
{
var w1 = new Window();
var w2 = new Window();
w1.ShowDialog();
w2.ShowDialog();
}
粘贴表单评论:
我认为当您关闭第一个窗口时,应用程序会检查是否有其他窗口,并且它没有找到任何窗口(因此应用程序正在关闭),因为第二个窗口尚未创建
答案 1 :(得分:0)
除非已关闭,否则ShowDialog不允许您创建相同的表单。
这是模态和无模式之间的区别。
我认为WPF也是同样的原因......
你可以看到↓
Display Modal and Modeless Windows Forms
<强>更新强>
通过 Stecya 的回答进行测试,它运行正常......
protected override void OnStartup(StartupEventArgs e)
{
var w1 = new Window();
var w2 = new Window();
w1.ShowDialog();
w2.ShowDialog();
}
答案 2 :(得分:0)
我是否正确地说这将连续显示两个窗口而不是同时显示?当window1关闭时,window2将自动打开,因为调用是ShowDialog()打开窗口,然后将焦点设置到它并且在window1关闭之前不打开另一个窗口?
答案 3 :(得分:0)
您可以使用for循环来执行此操作。但是,我不知道为什么不能直接打电话。
for (int i = 0; i < 2; i++)
{
new Window().ShowDialog();
}
答案 4 :(得分:0)
您可能会在用于关闭窗口1的代码中结束整个应用程序。如果您使用Environment.Exit(0);
之类的内容,则可能是问题所在。