求 WPF 打开窗体唯一性
在WPF中show出的窗体时判断如果没有打开则打开
打开了就获得窗体焦点
如何做啊? --------------------编程问答-------------------- 有没有人会啊 --------------------编程问答-------------------- 帮帮忙啊 --------------------编程问答-------------------- 假设你的窗体变量为win
if(win!=null)--------------------编程问答-------------------- 获取窗体焦点? 不是窗体么个控件焦点么? --------------------编程问答--------------------
{
if(win.Visibility !=Visibility.Visible)
win.Show();
else
win.Focus();
}
这样还是可以打开多个窗口啊。。 --------------------编程问答-------------------- 帮帮忙啊。。。 --------------------编程问答--------------------
确保某一子窗口只打开一次--------------------编程问答--------------------
foreach (Form frm in this.MdiChildren)
{
if (frm is WorkerList)
{
frm.WindowState = FormWindowState.Normal;
frm.Activate();
return;
}
}
WorkerList wl = new WorkerList();
wl.MdiParent = this;
wl.Show();
我这里是WPF啊 跟WINFORM 不一样 --------------------编程问答-------------------- 高手帮帮忙啊
--------------------编程问答-------------------- 那用另一种方法
窗体构造函数里加一个bool
如果调用构造函数实例化过这个窗体就为true
那么在别的地方调用之前先判断这个bool再new窗体. --------------------编程问答-------------------- 类似于单例模式,需要提供一个公开的Create方法,方法里面负责自己唯一的一个窗体。
维护一个静态变量,用来表明打开的窗体,捕获窗体关闭事件,关闭后清空变量。
就这么简单。 --------------------编程问答--------------------
这里你需要注意,是否打开多个窗口是取决于你是否new了多个实例来决定的。
我所说的那个win变量应该为一个全局变量。
--------------------编程问答--------------------
if(win!=null)
{
if(win.Visibility !=Visibility.Visible)
win.Show();
else
win.Focus();
}
else
{
win = new Window1();
win.Show();
}
public Window1 newwin;
//在事件中代码
if (newwin == null||newwin.IsVisible==false)
{
newwin = new Window1();
newwin.Show();
}
else
{
newwin.Activate();
newwin.WindowState = System.Windows.WindowState.Normal;
}
补充:.NET技术 , C#