在我的程序中,我首先打开主窗口。在这个窗口中,我通过单击按钮打开其他窗口。在测试我的程序时,我发现了两个问题。 第一:如果我打开一个窗户关闭它,我就不可能重新打开它。 Visual Studio然后在代码行Window.Show()中显示错误消息:
InvalidOperationException未处理。可见性无法设置或显示,或者窗口关闭后无法调用ShowDialog WindowInteropHelper.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);
}
}
}
我不知道这些问题是否一致,所以我想我只是在同一个问题上发帖,希望有人看到我做错了。