窗口操纵和控制能力

时间:2010-06-05 18:00:07

标签: c# .net wpf xaml

在我的应用程序中只有2个窗口 - win_a& win_b,在这些窗口的每一个上都有一个调用另一个窗口的按钮,例如点击win_a的btn1将调用win_b,点击win_b的btn2将显示win_a。

所需行为: 1.同时只允许一个对象实例,例如情况,其中不允许同时运行2个win_a实例。

  1. 当您点击调用已存在的窗口的按钮时,此操作只会将焦点更改为所需窗口。

  2. 如果您调用之前已创建的窗口,但在此窗口关闭后,此操作将创建此窗口的新实例。例如。有2个运行窗口。你关闭其中一个并在尝试调用此窗口后,所以相关按钮将创建它。

  3. 如何在WPF(XAML + C#)中编写它。目前我写了一个可以创建同一个窗口的很多实例的版本(没有实现控制实例的数量),但我想只看到同一个窗口的一个实例,因为我们可以在很多应用程序中看到它

    我的代码示例:

    Window win = new Window();
    win.Show();
    

    感谢。

2 个答案:

答案 0 :(得分:0)

首先,你需要在每个窗口上有2个引用。点击按钮 你需要检查一个参考。 在win_a中说。

//win_b is a member on Windows_a class
if(_win_b.IsVisible())
{
// set focus on it
}
else
{
//show win_b
}

为windows_b做同样的事情

答案 1 :(得分:0)

我建议采用不同的方法:

  1. 制作一个单例类,其中包含元组列表>

  2. 创建窗口时,您可以检查窗口是否在集合中。

    如果集合中有一个窗口你可以设置它激活win.Activate(), 否则你可以创建它并添加对集合list.add的引用(元组(win,“windowA”))

  3. 3.最后在你可以添加到集合的窗口上,关闭时需要从单例列表中删除窗口,你可以这样处理窗口的Close事件

    我没有我在这里写的代码,但我希望它有所帮助。