关闭和重新打开窗口

本文关键字:新打 开窗口 | 更新日期: 2023-09-27 18:16:10

在我的程序中我首先打开主窗口。在这个窗口中,我通过点击一个按钮打开了其他一些窗口。在测试程序时,我发现了两个问题。首先:如果我打开并关闭了一个窗口,我就不可能再打开它。然后Visual Studio在代码行windows . show ():

中显示一条错误消息。

InvalidOperationException未处理。可见性不能设置或显示,或ShowDialog窗口窗口助手。EnsureHandle不能在窗口关闭后被调用。

打开窗口的整个代码,看起来像这样:

    private void CmdDistance_Click(object senderr, RoutedEventArgs e)
    {
        distance.Show();
    }

打开其他两个窗口的代码几乎相同,但我使用了其他按钮。其他两个窗口也会出现这个问题。

第二个问题是,如果我首先打开窗口距离并关闭它,通过单击x,并打开另一个窗口,第二个窗口确实打开了,但窗口内的函数没有执行。目前,我在每个窗口中使用相同的代码,只是为了测试,但它只在第一个打开的窗口中工作。我还在这里,不知道我做错了什么。我在这里发布了我用来在各个窗口中调用函数的代码。

    private void MousePosition(object sender, System.Windows.Input.MouseEventArgs e)
    {
        if (distance!=null && distance.Visibility==Visibility.Visible )
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                myMousePosition = e.GetPosition(DepthImage);
                depthWidth = mySensor.DepthStream.FrameWidth;
                distance.setDistancePosition(myMousePosition, depthWidth, mySkeletonArray);
            }
        }
        else if (rectangle_area != null && rectangle_area.Visibility == Visibility.Visible)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                myMousePosition = e.GetPosition(DepthImage);
                depthWidth = mySensor.DepthStream.FrameWidth;
                rectangle_area.setRectanglePosition(myMousePosition, depthWidth, mySkeletonArray);
            }
        }
        else if (circle_area != null && circle_area.Visibility == Visibility.Visible)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                myMousePosition = e.GetPosition(DepthImage);
                depthWidth = mySensor.DepthStream.FrameWidth;
                circle_area.setCirclePosition(myMousePosition, depthWidth, mySkeletonArray);
            }
        }
    }

我不知道这些问题是否一起工作,所以我想我只是在同一个问题中发布两个,希望有人看到我做错了什么

关闭和重新打开窗口

关于第一个问题:你试过隐藏窗口而不是关闭它吗?看看如何重新打开关闭的窗户?