[英]Window manipulation and inctences control
在我的应用程序中,只有2个窗口— win_a和win_b,在每个窗口中都有一个按钮调用另一个窗口,例如,单击win_a的btn1将调用win_b,单击win_b的btn2将显示win_a。
期望的行为:1.同一时间只允许一个对象实例,例如,不允许2个win_a实例同时运行的情况。
当您单击调用已存在窗口的按钮时,此操作只会将焦点更改为所需窗口。
如果调用以前创建的窗口,但是在关闭窗口之后,此操作将创建该窗口的新实例。 例如,有2个正在运行的窗口。 您关闭其中一个,然后尝试回叫此窗口,则相关按钮将创建它。
如何在WPF(XAML + C#)中编写它。 目前,我编写了一个可以创建同一窗口的很多实例的版本(没有实现任何数量的控件实例),但是我只想看到同一窗口的一个实例,因为我们可以在很多应用程序中看到它。
我的代码示例:
Window win = new Window();
win.Show();
谢谢。
首先,每个其他窗口需要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相同
我建议一种不同的方法:
制作一个单例类,其中包含一个元组列表List>
创建窗口时,您可以检查窗口是否在集合中。
如果集合包含一个窗口,则可以将其设置为activ win.Activate(),否则可以创建它并添加对集合列表的引用。add(tuple(win,“ windowA”))
3,最后在可以添加到集合中的窗口上,关闭时需要将窗口从单例列表中删除,您可以执行此操作以处理窗口的Close事件
我没有在这里编写的代码,但我希望它能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.