`
yanyanquan
  • 浏览: 450414 次
  • 性别: Icon_minigender_1
  • 来自: 江门
社区版块
存档分类
最新评论

C# Winform 反射调用打开窗体

 
阅读更多
  /// <summary>
    ///  /// <summary>
    ///  反射操作打开子窗体
    /// </summary>
   /// </summary>
    public class ReflectionHelper
    {
        /// <summary>
        /// 打开新的子窗体
        /// </summary>
        /// <param name="strName">窗体的类名</param>
        /// <param name="AssemblyName">窗体所在类库的名称</param>
        /// <param name="MdiParentForm">父窗体</param>
        public static void CreateForm(string strName, string AssemblyName, Form MdiParentForm)
        {
            int Index = strName.LastIndexOf(".");
            string FormName = strName.Substring(23);
            if (!ShowChildForm(FormName, MdiParentForm))
            {
                string path = AssemblyName;//项目的Assembly选项名称
                string name = strName; //类的名字
                Form doc = (Form)Assembly.Load(path).CreateInstance(name);
                doc.WindowState = FormWindowState.Maximized;
                doc.MdiParent = MdiParentForm;
                doc.Show();
            }
        }

        /// <summary>
        /// 防止子窗体再度打开
        /// </summary>
        /// <param name="p_ChildrenFormText"></param>
        /// <param name="MdiParentForm"></param>
        /// <returns></returns>
        public static bool ShowChildForm(string p_ChildrenFormText, Form MdiParentForm)
        {
            int i;
            //依次检测当前窗体的子窗体
            for (i = 0; i < MdiParentForm.MdiChildren.Length; i++)
            {
                //判断当前子窗体的Text属性值是否与传入的字符串值相同
                if (MdiParentForm.MdiChildren[i].Name == p_ChildrenFormText)
                {
                    //如果值相同则表示此子窗体为想要调用的子窗体,激活此子窗体并返回true值
                    MdiParentForm.MdiChildren[i].Activate();
                    return true;
                }
            }
            //如果没有相同的值则表示要调用的子窗体还没有被打开,返回false值
            return false;
        }
}

 

 

调用:

 

ReflectionHelper.CreateForm("HuishengFS.UI.Systemer.FrmUsers", "HuishengFS.UI", this);

 

 

 

 

分享到:
评论

相关推荐

    C# winform 子窗体调用父窗体函数实现关闭该窗体打开另一个窗体

    C# winform 子窗体调用父窗体函数实现关闭该窗体打开另一个窗体;在父窗体分From1内嵌一个panel1,在panel1里载入From2,点击在子窗体From2中的按钮,清除panel1里的From2,新载入From3,点击在子窗体From3中的按钮...

    C# WinForm两种等待窗体的实现

    本文将详细介绍两种常见的C# WinForm等待窗体的实现方法。 首先,我们来看第一种方法:使用BackgroundWorker组件。BackgroundWorker是一个异步执行任务的类,它可以避免阻塞主线程,确保UI的正常响应。实现步骤如下...

    C#Winform动态调用C++和C#的Dll

    本文将重点讲解如何在C#的Winform应用中动态调用C++和C#编写的DLL,并将DLL作为嵌入资源处理,避免因丢失DLL文件而引发的问题。 首先,我们需要理解DLL的工作原理。DLL文件包含可执行代码和数据,当一个应用程序...

    C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法

    在C# WinForm开发中,有时我们需要在子窗体中操作或更新父窗体的状态,例如刷新父窗体内容或更改父窗体上的控件值。以下两种方法详细阐述了如何实现这一目标。 **方法一:使用委托** 在这种方法中,我们通过定义一...

    C#winform判断窗体是否打开

    在C# WinForm中,判断一个窗体是否已经打开并处于活动状态通常涉及到对窗体实例的引用检查。示例代码中的`if(F2==null || F2.IsDisposed)`语句就是一种常见的实现方式: - **F2==null**:这检查窗体实例是否尚未...

    C#Winform控件随窗体缩放

    标题"**C# Winform控件随窗体缩放**"正是关于这个主题,描述中提到的是一种实现方式,通过整理博客上的资料来帮助初学者理解如何实现这一功能。 控件自动缩放是Windows应用程序设计中的一个重要概念,它涉及到...

    Winform与WPF窗体互相调用方法

    首先,让我们来看Winform调用WPF窗体的方法: 1. 创建WPF用户控件:在WPF项目中创建一个UserControl,并设计好你需要的界面和逻辑。这个UserControl将成为被Winform调用的对象。 2. 添加引用:在Winform项目中,...

    c#的winform调用外部exe作为子窗体

    在C#的Windows Forms(WinForm)开发中,有时候我们需要集成其他应用程序的功能,这时可以将外部的exe程序作为子窗体来调用。这在多应用程序整合或构建复杂系统时非常有用。本篇将详细讲解如何在C#的WinForm应用中调...

    C# Winform在MDI中打开一个子窗体关闭上一个子窗体

    在C# Winform编程中,MDI(Multiple Document...通过以上分析和示例代码,我们可以看到在C# Winform中管理MDI子窗体的灵活性和强大功能。正确地使用MDI结构不仅可以提升应用程序的效率,还能极大地改善用户的交互体验。

    C# winform调用本机摄像头,demo,附源码

    本文将详细讲解如何利用C# Winform调用本机摄像头,包括多摄像头切换、多分辨率切换以及拍照功能。我们将基于提供的标题和描述进行分析,并给出关键知识点。 1. **C# Winform基本概念**: - C#是微软公司推出的一...

    C#实现Winform中打开网页页面的方法

    本文将详细介绍如何在C#的Winform应用程序中打开并控制网页页面。 首先,最简单直接的方法是使用`System.Diagnostics.Process.Start()`方法启动默认的浏览器来打开指定的网页。以下是一个简单的示例: ```csharp ...

    C#跨窗体(Winform)调用控件(委托回调)

    本文将深入探讨这两个概念以及它们如何在C# Winform应用程序中实现跨窗体通信。 首先,让我们理解什么是委托。在C#中,委托类似于函数指针,它允许我们将方法作为参数传递给其他方法,或者存储在变量中以便稍后调用...

    C# winform窗体间传值(使用委托或事件)

    C#winform窗体间传值,三种方法示例,注释详细。使用方法:使用vs2013打开编译运行即可; 工程中总共介绍了三种方法: ###方法1:通过保存对象的引用调用其方法实现对子窗体的控制; ###方法2:通过委托,在子窗体...

    C#写winform调用webservice例子(经典)

    在本文中,我们将深入探讨如何使用C#语言在Windows Forms(WinForm)应用程序中调用Web服务,以实现一个经典的示例:获取互联网上的天气预报信息。这个例子适合于使用Visual Studio 2005或2008开发环境。 首先,让...

    WinForm窗体间事件调用

    ### WinForm窗体间事件调用 #### 概述 在Windows Forms应用程序开发过程中,我们经常需要实现不同窗体间的交互。例如,在一个窗体中触发另一个窗体上的某个事件,这种需求在很多应用场景中非常常见。本文档将详细...

    在类库或winform项目中打开另一个winform项目窗体的方法

    以上方法使得在不同的Winform项目之间能够灵活地共享和调用窗体,这对于大型应用的模块化开发尤其有用。通过这种方式,你可以保持代码的组织性,同时减少代码的耦合度,使得每个项目专注于其核心功能。希望这个解释...

    c#winform调用OpenCV4.5.4c++dll打开本地或网络摄像头

    c++编译OpenCV生成dll winform调用dll打开本地或网络摄像头 支持海康、大华等网络摄像头

    C# WinForm窗体及其控件的自适应

    3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,首次记录窗体和其控件初始位置和大小,之后调用类的自适应方法,完成自适应。 4.Panel,DataGridView等控件同样适用。 应用代码如下: using System; ...

    C# Winform 窗体传值及接收返回值

    在C# Winform应用程序开发中,常常需要在不同的窗体之间传递数据,以便实现各功能模块之间的交互。这里我们将详细探讨两种主要的传值方法:通过构造函数传值和通过属性传值。 首先,我们来看**通过构造函数传值**的...

Global site tag (gtag.js) - Google Analytics