zoukankan      html  css  js  c++  java
  • 从DLL中加载启动窗体

    在一般应用程序中,经常有个主登陆窗体,做验证及其他等操作。为保持公司项目(或是产品)的一致性,常将其固化,在项目开发时候直接引用之即可。下面做个简单的事例程序。具体创建工程,添加项目过程略过,下面是创建好以后的解决方案图:

    主要步骤:
    1: 在类库项目Main中要添加对System.Drawing和System.Windows.Forms的引用;
    2:在类库项目Main的属性中改变其输出类型为Windows 应用程序,输出路经为 ..\;
    3:在类库项目Test的属性中改变其输出路经为..\;

    MainStart.cs基本代码实现如下:

     1using System;
     2using System.Drawing;
     3using System.Collections;
     4using System.ComponentModel;
     5using System.Windows.Forms;
     6using System.Data;
     7using System.Diagnostics;
     8using System.Reflection;
     9using System.Threading;
    10using System.Xml;
    11using System.IO;
    12
    13namespace Main
    14{
    15    /// <summary>
    16    /// MainStart 的摘要说明。
    17    /// </summary>

    18    public class MainStart
    19    {
    20        public MainStart()
    21        {
    22            //
    23            // TODO: 在此处添加构造函数逻辑
    24            //
    25        }

    26
    27        [STAThread]
    28        static void Main(string[] args) 
    29        {
    30
    31            Assembly a;
    32            Type b;
    33            Object obj = null;
    34            string dll_path = " ";
    35            Type[] mytypes;
    36            try 
    37            {
    38                dll_path =Path.GetFullPath("."+ "\\Test.dll"
    39
    40                a = Assembly.LoadFrom(dll_path);
    41  
    42                try 
    43                {
    44                    mytypes = a.GetTypes();
    45                }
     
    46                catch 
    47                {
    48                }

    49
    50                b = a.GetType("Test.MainForm");
    51                obj = Activator.CreateInstance(b);        
    52                Application.Run((Form)obj);  
    53            }
     
    54            catch (Exception e) 
    55            {
    56        
    57                Console.WriteLine(e.ToString());
    58                if (obj != null
    59                {
    60                    ((Form)obj).Close();
    61                }

    62                return;
    63            }

    64
    65        }

    66
    67    }

    68}

    4:将Main做为启动项目。编译运行效果如下:

  • 相关阅读:
    JAVASCRIPT首页广告轮流显示
    ASP.NET (C#) 面试笔试题目收集
    ASP 按修改时间读取文件夹中文件并且排序
    CSS Body宽度和高度
    ASP.NET页面间的传值的几种方法(总结)
    IFRAME高度自适应——框架高度等于其页面高度
    ActionScript 3.0 Step By Step系列(八):动态的数据展现源于灵活的数据绑定
    ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题
    ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”
    ActionScript 3.0 Step By Step系列(九):使用样式(style)和皮肤(Skin)两大画笔为应用程序界面画妆
  • 原文地址:https://www.cnblogs.com/jiangshaofen/p/1242036.html
Copyright © 2011-2022 走看看