欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 简单反射实现winform左侧树形导航,右侧切换内容

程序员文章站 2022-03-26 08:40:56
先看看效果: 核心代码: 以上就是FrmMain主界面核心代码。以上代码没有进行优化,根据个人经验自己优化下。 demo ......

先看看效果:

C# 简单反射实现winform左侧树形导航,右侧切换内容

 

核心代码:

using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.reflection;

namespace winformdemo
{
    public partial class frmmain : form
    {
        public frmmain()
        {
            initializecomponent();
        }

        private void tvmenu_nodemousedoubleclick(object sender, treenodemouseclickeventargs e)
        {
            if (null != e.node.parent)
            {
                if (0 == e.node.nodes.count)
                {
                    showform(e.node.text);
                }
            }
        }

        private void showform(string strformname)
        {
            form frm = getform(strformname);
            frm.bringtofront();
            frm.show();
        }

        private form getform(string strformname)
        {
            control.controlcollection ctrls = pnlcentral.controls;
            if (ctrls.containskey(strformname))
            {
                return ctrls[strformname] as form;
            }
            else
            {
                assembly assembly = assembly.getexecutingassembly();
                type type = assembly.gettypes().where(item => item.name.equals(strformname)).firstordefault();
                
                form frm = assembly.createinstance(type.fullname) as form;
                frm.name = strformname;
                frm.toplevel = false;
                frm.dock = dockstyle.fill;
                frm.formborderstyle = system.windows.forms.formborderstyle.none;
                pnlcentral.controls.add(frm);

                return frm;
            }
        }
    }
}

以上就是frmmain主界面核心代码。以上代码没有进行优化,根据个人经验自己优化下。