当前位置:编程学习 > C#/ASP.NET >>

求 WPF 打开窗体唯一性

在WPF中show出的窗体时
判断如果没有打开则打开
打开了就获得窗体焦点


如何做啊? --------------------编程问答-------------------- 有没有人会啊 --------------------编程问答-------------------- 帮帮忙啊 --------------------编程问答-------------------- 假设你的窗体变量为win
if(win!=null)
{
  if(win.Visibility !=Visibility.Visible)
      win.Show();
  else
      win.Focus();
}
--------------------编程问答-------------------- 获取窗体焦点? 不是窗体么个控件焦点么? --------------------编程问答--------------------
引用 3 楼 bunliney 的回复:
假设你的窗体变量为win
C# code
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();

--------------------编程问答--------------------
引用 7 楼 sugarbelle 的回复:
C# code
确保某一子窗口只打开一次

foreach (Form frm in this.MdiChildren)
            {
                if (frm is WorkerList)
                {
                    frm.WindowState = FormWindowState.Normal;
    ……



我这里是WPF啊    跟WINFORM 不一样 --------------------编程问答-------------------- 高手帮帮忙啊
--------------------编程问答-------------------- 那用另一种方法

窗体构造函数里加一个bool

如果调用构造函数实例化过这个窗体就为true

那么在别的地方调用之前先判断这个bool再new窗体. --------------------编程问答-------------------- 类似于单例模式,需要提供一个公开的Create方法,方法里面负责自己唯一的一个窗体。
维护一个静态变量,用来表明打开的窗体,捕获窗体关闭事件,关闭后清空变量。
就这么简单。 --------------------编程问答--------------------
引用 5 楼 al525la 的回复:
引用 3 楼 bunliney 的回复:

假设你的窗体变量为win
C# code
if(win!=null)
{
if(win.Visibility !=Visibility.Visible)
win.Show();
else
win.Focus();
}


这样还是可以打开多个窗口啊。。


这里你需要注意,是否打开多个窗口是取决于你是否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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,