【问题标题】:Getting "Cannot set Visibility or call Show or ShowDialog after window has closed." After main window .ctor and Loaded获取“窗口关闭后无法设置可见性或调用 Show 或 ShowDialog。”在主窗口 .ctor 和 Loaded 之后
【发布时间】:2009-04-22 13:51:13
【问题描述】:

大家好,我遇到了一个棘手的问题。

对于这个窗口:

<Window x:Class="Host.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        WindowStyle="ToolWindow" Top="-5000" Left="-5000" Width="0" Height="0"
        ShowInTaskbar="False"
        Loaded="Window_Loaded"
        />

“窗口关闭后无法设置可见性或调用 Show 或 ShowDialog。”在 .ctor 和 Window_Loaded 之间引发异常。这仅在独立运行时发生,而不是与 VS 一起运行。 .ctor 如下:

    public MainWindow()
    {
        InitializeComponent();
        MessageBox.Show("1");
    }

当 MessageBox 不存在时不会发生异常,如果它不存在,应用程序会在启动后立即关闭,但它仍然无法到达 Window_Loaded 处理程序。它不会从我的代码中抛出任何异常,它来自尝试从 PresentationFramework.dll 调用 Window.VerifyCanShow() 的应用程序。

有什么想法吗?

【问题讨论】:

  • 我无法重现该问题。您那里的代码在我的机器上完美运行。您还能提供其他信息吗?

标签: c# wpf


【解决方案1】:

从您发布的异常中,不知何故窗口正在关闭。我无法从您发布的代码中看出。

一旦窗口关闭,您必须重新分配它以再次“显示”它。不过,您可以隐藏它,然后再次显示它而没有任何问题。我相信这是有充分理由的,但如果我知道的话,我就该死。无论如何,这就是异常在大喊大叫的原因。

可能是您的左右位置与您的宽度和高度(0 像素)相结合,使其接近(-5000 像素)。

【讨论】:

  • 我没有关闭/隐藏任何窗口,这发生在主窗口甚至显示之前。
【解决方案2】:

我怀疑您的 Main 方法可能有问题。 它通常在Program.cs 中找到。把它贴出来让我们看看那里有什么问题。

【讨论】:

    【解决方案3】:

    不,整个问题是我真的非常非常愚蠢。当我打开 VS 时,我的单例代码看到 VShost.exe 正在运行,并杀死了该应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      相关资源
      最近更新 更多