天天看点

.NET大型C/S系统可动态设置登录窗口的实现参考

若系统的主程序设置不对,就是系统的启动窗体设置错了,很容易导致系统退出时无法从内存里干净干净的退出,甚至在编译开发时也会遇到一些不必要的问题,例如已经在内存里占用等,非要退出开发环境才可以重新编译调试的问题。

   最近把系统的主程序重新进行了调整,反复测试确认已经修正了无法从内存里干净退出的问题,心里舒坦了很多了。

   在配置文件中的设置的主程序、登录程序的设置参考。

    <!-- 登录窗体 -->

    <add key="LogOnAssembly" value="DotNet.WinForm.LogOn"/>

    <add key="LogOnForm" value="FrmLogOn"/>

    <add key="MainForm" value="SDIMainForm"/>

   工程项目参考图如下

   主程序中的代码如下

private void MainForm_Load(object sender, EventArgs e)

{

    Form logOnForm = CacheManager.Instance.GetForm(BaseSystemInfo.LogOnAssembly, BaseSystemInfo.LogOnForm);

    logOnForm.ShowDialog(this);

}

   登录按钮调用主窗体的事件参考部分

if (!BaseSystemInfo.LogOned)

    Form mainForm = this.Owner;

    ((IBaseMainForm)mainForm).InitService();

    ((IBaseMainForm)mainForm).InitForm();

    mainForm.Show();

下面是登录窗体的接口定义部分

//------------------------------------------------------------

// All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd. 

using System;

namespace DotNet.WinForm.Utilities

    /// <summary>

    /// IBaseMainForm

    /// 主窗口的接口

    /// 

    /// 修改纪录

    ///

    ///        2008.10.29 版本:1.1 JiRiGaLa 重新命名。

    ///        2008.05.04 版本:1.0 JiRiGaLa 创建。

    ///        

    /// 版本:1.0

    /// <author>

    ///        <name>JiRiGaLa</name>

    ///        <date>2008.05.04</date>

    /// </author> 

    /// </summary>

    public interface IBaseMainForm

    {

        /// <summary>

        /// 初始化窗体

        /// </summary>

        void InitForm();

        /// 初始化服务

        void InitService();

        /// 检查菜单

        void CheckMenu();

    }

 本文转自jirigala_bao 51CTO博客,原文链接:http://blog.51cto.com/jirigala/809493

继续阅读