wpf单例模式只打开一个窗口例子

WPF  单例窗口Close()后再Show()会报错,Close会调用Dispose,资源会马上被释放,ShowDialog()的情形是一样的。


 

重载OnClosing(CancelEventArgs e)方法,使用Hide()方法。

 代码如下 复制代码
 private static GHXTestControl _instance;
        private static readonly object ObjLok = new object();
        public static GHXTestControl Instance()
        {
            lock (ObjLok)
            {
                return _instance ?? (_instance = new GHXTestControl());
            }
        }
        /// <summary> 重写Close,窗口关闭时设置为隐藏。 
        /// </summary> 
        protected override void OnClosing(CancelEventArgs e)
        {
            Hide();
            e.Cancel = true;
        }
        private GHXTestControl()
        {
            InitializeComponent();
        }

调用:

 代码如下 复制代码

  private WindowPages.GanHuaxue.GHXTestControl _GHXControl;
        public WindowPages.GanHuaxue.GHXTestControl GHXControl
        {
            get
            {
                if (_GHXControl == null)
                    _GHXControl =   WindowPages.GanHuaxue.GHXTestControl.Instance();
                return _GHXControl;
            }
        }

        private void Click()
        {
            if (CtrButtonType == CometButtonType.干化学)
            {
                /*WindowPages.SystemManagement.Test t = new WindowPages.SystemManagement.Test("myArg1", "myArg2");
                t.BtnEvent += s1; //弹出的页面 点击关闭按钮时
                t.ShowDialog();
                */

                //WindowPages.GanHuaxue.GHXTestControl t = new WindowPages.GanHuaxue.GHXTestControl();
                GHXControl.AddInspect(ThisBtn);
                GHXControl.ShowActivated=true;
                GHXControl.Show();
                GHXControl.Activate();
            }

}

时间: 2024-10-30 20:21:23

wpf单例模式只打开一个窗口例子的相关文章

界面-如何使打开的其他程序或者文档在MFC窗口中显示,而不是新打开一个窗口

问题描述 如何使打开的其他程序或者文档在MFC窗口中显示,而不是新打开一个窗口 我想在程序界面中指定一个区域,用于显示被打开的其他程序或者文档的界面.可是我用ShellExecute函数打开指定的那个文档和程序的时候,总是会再启动另一个窗口,效果就像是直接点击打开那个文件一样. 解决方案 将mfc窗口设置为其它程序的父窗口 解决方案二: 参考:程序只允许打开唯一实例且所有关联文档都在同一实例内打开的一揽子解决办法http://blog.csdn.net/IfI/article/details/1

WPF 使用按钮打开一个page后,其余按钮失效

问题描述 WPF使用按钮打开一个page后,其余按钮失效,不知道什么原因 解决方案 解决方案二: 解决方案三:WPF运行过程中以UI线程为主,page运行时线程转到当前的page中执行了,其余的按钮可能是不可用的.还有一种可能就是界面的层级问题,page的层级有可能过高,覆盖在其他UI界面之上,之前的界面的控件就操作不了了.解决方案四:最好附上部分代码,或者你打断点调试,表面是看不出来的

Win7一问一答 如何只保留一个窗口而其他最小化?

Win7一问一答系列文章专门解答有关Win7的疑难问题,小到Win7主题.Win7桌面的应用文章,大到购买Win7.Win7安装等的长篇大论文章.力求用最简洁的语言回答初学者提出的问题,希望网友看到之后能举一反三解决问题.本期给大家介绍"鼠标抖一抖,窗口最小化" . 问题描述:有些网友说,有时候打开了很多的窗口,想从桌面找点东西,但是又被重重的窗口给挡住了.例如,用QQ跟好友聊天的时候,想把桌面的一张照片发给好友,这就要把窗口一个一个的最小化,或者一次把所有的窗口全部最小化,然后再找回

WPF 如何只关闭子窗口

问题描述 为什么我在关闭子窗口时,连同父窗体也同时关闭了?我的代码如下:父窗体:index.xaml<UserControlx:Class="WpfOA.Views.BusinessManageView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"x

加入JFrame 东西怎么都不显示呀,只出来一个窗口

问题描述 packagestudent;importjava.util.*;importjavax.swing.*;importjava.awt.BorderLayout;importjava.awt.Component;importjava.awt.Container;importjava.awt.event.*;importjava.sql.*;publicclassText2extendsJFrame{publicText2(){init();}publicvoidinit(){this.

如何做一个从打开一个窗口到这个窗口显示到屏幕上的进度条

问题描述 我想做一个数据库查询的窗口,由于数据库比较大查询的时间较长,所以在"StatusStrip"上做了一个进度条,让这个进度条显示从数据库查询窗口载入到数据库查询完毕然后将查询的结果添加至"datagridview"上. 解决方案 解决方案二:关注一下.可以用线程委托.解决方案三:能不能给个类似的例子学习一下解决方案四:这是我很早以前翻译的一篇文章:<利用辅助线程更新用户界面>http://www.vckbase.com/document/view

JSP的弹出页面如何实现只打开一个弹出...

问题描述 在一个页面上有三个按钮,分别调用不同的后台代码后弹出页面,页面刷新出对应的JSP页.如果这三个按钮依次点击的话就会弹出三个页面.如何能够实现如下功能:点击其中一个按钮,弹出一个页面,此时不关闭弹出页面,将其最小化,再去点击另一个按钮,希望不在弹出第二个页面,而是在第一个弹出页面中刷新出新的JSP页面.以此类推,无论点击多少个按钮,保证只有一个弹出页面.不知道我描述的是否清楚,请教了...PS:(不需要模态控制) 解决方案 解决方案二:js中设置一个全局变量初始为0第一个开始,检测,若为

Win7打开文件夹会重新打开一个窗口问题的解决方法

一. 使用360查杀木马,完了后它会提示你修复相关项,修复完后按照操作重启即可解决问题. 二. 在别人电脑拷贝一份C://programe files/Internet Explorer文件到你电脑相应位置也可以解决问题. 三. 1. 点击开始-〉所有程序-〉附件,右击命令行提示符,选择以管理员身份运行,如果出现用户帐户控制窗口,点击继续. 2. 复制或输入下列命令 regsvr32 "%SystemRoot%System32actxprxy.dll" regsvr32 "%

c#WPF创建或打开一个事件信号的函数

问题描述 像c++的CreateEvent 解决方案 解决方案二:C#中打开事件应该是说触发事件.C#中的事件包含事件的sender以及EventArgs.这需要你声明调用.解决方案三:raiseXXX手动触发事件·解决方案四:用ManualResetEvent或AutoresetEvent