知识大全 .NET上根据字符串动态创建控件
Posted 知
篇首语:能够说服别人最好的方式,其实就是你始终坚持在做的事。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET上根据字符串动态创建控件相关的知识,希望对你有一定的参考价值。
.NET上根据字符串动态创建控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
首先 利用System Type GetType方法 获得字符串中指定的控件的类型实例
这里需要注意这个字符串的语法 根据msdn的解释
按名称和签名隐藏会考虑签名的所有部分 包括自定义修饰符 返回类型 参数类型 标记和非托管调用约定 这是二进制比较
对于反射 属性和事件按名称和签名隐藏 如果基类中有同时带 get 访问器和 set 访问器的属性 但派生类中仅有 get 访问器 则派生类属性隐藏基类属性 并且您将无法访问基类的设置程序
自定义特性不是通用类型系统的组成部分
不对数组或 类型执行搜索 除非已将它们加载到可用类表中
typeName 可以是简单的类型名 包含命名空间的类型名 或是包含程序集名称规范的复杂名称
如果 typeName 只包含 Type 的名称 则此方法先是在调用对象的程序集中进行搜索 然后在 mscorlib dll 程序集中进行搜索 如果 typeName 用部分或完整的程序集名称完全限定 则此方法在指定的程序集中进行搜索
AssemblyQualifiedName 可以返回完全限定的类型名称(包含嵌套类型和程序集名称) 所有支持公共语言运行库的编译器将发出嵌套类的简单名称 并且当被查询时 反射依照下列约定构造一个 mangled 名称
例如 类的完全限定名可能类似于如下形式
TopNamespace SubNameSpace ContainingClass+NestedClass MyAssembly
但是直接使用Type GetType( System Windows Forms TextBox )获得Type是Null 这是因为 Windows Forms程序集是公有的程序集 是位于程序集缓存中的 而这个程序集有不同的版本 为了确定使用的版本 我们不仅要提供程序集的名称 还要提供程序集的版本和强名称 照这个思路 在使用的 net Framework 上 将这一句写成Type GetType( System Windows Forms CheckBox System Windows Forms Version= Culture=neutral PublicKeyToken=b a c e ) 现在运行就没有问题了 问题是我们如何取得所用Windows Forms程序集的版本和强名称?可以用GetType(CheckBox) AssemblyQualifiedName这样的语法 一旦得到了这些信息 我们就可以将这些信息用于其它任何控件 因为他们都来自于同一个版本Windows Forms程序集
利用上面说到的方法 现在就可以使用System Activator CreateInstance方法来创建一个TextBox控件了
public static void CreateControl(string controlType Form form int positionX int positionY)try string assemblyQualifiedName = typeof(System Windows Forms Form) AssemblyQualifiedName;string assemblyInformation = assemblyQualifiedName Substring(assemblyQualifiedName IndexOf( ));Type ty = Type GetType(controlType + assemblyInformation);Control newControl = (Control)System Activator CreateInstance(ty);form SuspendLayout();newControl Location = new System Drawing Point(positionX positionY);newControl Name = ty Name + form Controls Count ToString();form Controls Add(newControl);form ResumeLayout();catch(Exception ex)throw ex;
cha138/Article/program/net/201311/12930相关参考
基于ASP.NET的Web动态控件创建 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要web
MFC中动态控件的创建与响应 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 动态控件是指在需要时
JAVA高级:js动态创建控件的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! functi
知识大全 一步一步创建Visual Basic .NET 控件
一步一步创建VisualBasic.NET控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!我从来
ASP.net中动态加载控件时一些问题的总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 经常
ASP.NET2.0服务器控件之创建复杂属性 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 页面
Assembly的CreateInstance有三个重载第一个参数需要是一个字符串表示的完整的类名第二个参数是一个bool类型如果为true表示对第一个参数不区分大小写 第三个影响执行搜索的方式
用.NET动态创建类的实例讲解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 看了网上很多关于D
知识大全 ASP.NET入门教程 1.2 创建动态站点的强大工具
ASP.NET入门教程1.2创建动态站点的强大工具 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&
在VB.Net中创建使用控件数组 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一首先创建一个But