[Winfrom] 使用一个启动快捷方式,打开2个不同的窗体并且共用一个缓存空间

Posted weimingtian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Winfrom] 使用一个启动快捷方式,打开2个不同的窗体并且共用一个缓存空间相关的知识,希望对你有一定的参考价值。

之所以有这个功能,是不想再给后台和前台写一套通讯机制的情况下偷懒的办法!

之前发现在主函数里面写方法,第二次启动程序打开新窗体或是显示隐藏窗体!最后却发现在主函数里面打开的新窗体和原启动的程序并不是共享一个缓存的!

于是乎想了一个比较歪的办法,原窗体设置计时器之类的检测变化,利用外部文件的变化,进行窗体的展示、隐藏和打开,这样实际上还是在原程序上打开的新窗体!

外部文件使用什么都可以,文本、config、xml之类的!

这个是写在主函数里面的,用来检测是否二次启动:

Process[] processcollection = Process.GetProcessesByName(Application.CompanyName);
            // 如果该程序进程数量大于,则说明该程序已经运行,则弹出提示信息并提出本次操作,否则就创建该程序
            if (processcollection.Length > 1)
            {
                string ss=ConfigurationManager.AppSettings["MainFlag"];
                if (ss=="0")
                {
                    SetConfigValue("MainFlag", "1");
                }               
            }
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                // 运行该应用程序
                Application.Run(new FormClient());
            }

这个是计时器里的检测:

 string mainflag = GetConfigValue("MainFlag"); 
            if (mainflag == "1")
            {
                SetConfigValue("MainFlag","3");
                FormMain fm = new FormMain();
                fm.Show();
            }

关闭新打开窗体的时候需要标记还原回去。

修改和读取config:

        /// <summary>
        /// 获取AppSettings中某一节点值
        /// </summary>
        /// <param name="key"></param>
        public static string GetConfigValue(string key)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            if (config.AppSettings.Settings[key] != null)
                return config.AppSettings.Settings[key].Value;
            else

                return string.Empty;
        }

        /// <summary>
        /// 修改AppSettings中配置
        /// </summary>
        /// <param name="key">key值</param>
        /// <param name="value">相应值</param>
        public static bool SetConfigValue(string key, string value)
        {
            try
            {
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                if (config.AppSettings.Settings[key] != null)
                    config.AppSettings.Settings[key].Value = value;
                else
                    config.AppSettings.Settings.Add(key, value);
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
                return true;
            }
            catch
            {
                return false;
            }
        }

不知道还有没有不利用外部文件的方式,达到这种效果!或者有着更好的方式,欢迎交流指导!!!

以上是关于[Winfrom] 使用一个启动快捷方式,打开2个不同的窗体并且共用一个缓存空间的主要内容,如果未能解决你的问题,请参考以下文章

如何启动oracle

怎么把快捷方式添加到启动项里面?

怎样修改自己创建桌面快捷的图标

怎么设置软件开机自启动

vm虚拟机系统没有快捷方式怎么打开

Chrome开机启动网页并全屏