繁体   English   中英

窗口操作和权限控制

[英]Window manipulation and inctences control

在我的应用程序中,只有2个窗口— win_a和win_b,在每个窗口中都有一个按钮调用另一个窗口,例如,单击win_a的btn1将调用win_b,单击win_b的btn2将显示win_a。

期望的行为:1.同一时间只允许一个对象实例,例如,不允许2个win_a实例同时运行的情况。

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

  2. 如果调用以前创建的窗口,但是在关闭窗口之后,此操作将创建该窗口的新实例。 例如,有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相同

我建议一种不同的方法:

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

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

    如果集合包含一个窗口,则可以将其设置为activ win.Activate(),否则可以创建它并添加对集合列表的引用。add(tuple(win,“ windowA”))

3,最后在可以添加到集合中的窗口上,关闭时需要将窗口从单例列表中删除,您可以执行此操作以处理窗口的Close事件

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM