【发布时间】:2016-01-22 10:23:43
【问题描述】:
我需要一些帮助才能让 ShowDialog 出现多次,在这种情况下为 2x 而不会出现如下错误:在窗口关闭后无法设置可见性或调用 Show、ShowDialog 或 WindowInteropHelper.EnsureHandle。任何帮助表示赞赏。
namespace Application
{
public partial class App : Application
{
int count = 0;
int logonAgreements = 2;
while (count < logonAgreements)
{
DialogResult = lf2.ShowDialog(logonAgreements, count + 1);
if (DialogResult == true)
{
count++;
}
else if (DialogResult == false)
{
Close();
}
}
public DialogResult ShowDialog(int numCustomer, int currentCustomerIndex)
{
this.labelPanelHeader.Content = "Log-On Agreement" + " (" + currentCustomerIndex + " of " + numCustomer + ")";
return this.ShowDialog();
}
}
}
【问题讨论】:
-
错误信息对我来说似乎很清楚。
ShowDialog()在窗口实际关闭之前不会返回,并且不允许您再次显示关闭的窗口。 -
如果你能解释为什么你觉得你应该保留原来的对话框窗口对象,而不是每次你想显示它时都根据需要创建一个新对象,那将会很有帮助。正如错误所说,无论如何你都不能真正做到这一点——一旦对话框关闭,它就无法再次显示。通常,对话框状态将由一个单独的视图模型对象表示,您可以根据需要多次重复使用它。如果您提供有关您实际尝试做的具体细节,您可能会得到一个很好的答案来解决您更广泛的问题,即使直接的问题无法解决。
-
我通过使用 while 循环再次创建了窗口。窗口 lf2 = 新窗口();这似乎正是我所需要的。
标签: c# wpf window show showdialog