此代码在FlowLayoutPanel中创建了一个按钮 大多数情况下这都能正常运行 除非事件处理器不按照按钮所示的进行操作 如果你打算服务多个控件类型 那么每个控件类型都需要一个独特的处理 你可以使用多事件处理器或者为某些类型提供选择标准
NewLink_Click()事件处理器照常将传入发送器转换成指定类型 在这个示例中则是LinkLabel 该代码可以访问LinkLabel属性并能用其他方式进行互动 在我们的示例中 只显示了一个能在创建链接的时候告知我们的对话框
使用动态代码
在运行时创建一个控件是在无法确定应用程序功能的时候采取的一种策略 但是动态创建控件并不适用于所有的情况 有些时候你必须建立可执行代码 虽然你的应用程序运行的目的是补偿不同极其之间的配置 不同用户的需求 不同的环境需求或是其他要求 当应用程序所运行的电脑不存在控件 那么通常是需要创建动态代码的
幸运的是 NET为我们提供了一系列动态代码选项 例如 你可以创建一个可执行的能独立运行的程序或是可以想运行中的程序加载一个DLL然后再执行 当你需要演示一个外部任务的时候可以使用选择可执行 如运行一种脚本——该DLL选项最适合扩大现有的应用程序功能
你可以运行来自文件或内存的动态代码 当你需要不止一次地运行代码时 可以使用文件 对代码的检查可以再次运行外部文件而不需要对其进行二次编译 当你需要多次演示任务的时候 如一个安装请求 那可以使用内存图像
当然我们也可以更改源代码 例如 你可以使用字符串来建立需要在应用程序中直接使用的代码 如果你需要代码具有高度灵活性 且代码本身不是很长时 这一方法的优势就非常显著 也可以从文件里建立代码 就如同VS一样 这一方法最适用于相对稳定且不需要复杂编码的需求 第三种选择是使用Documentation Object Model来创建代码并将其作为CodeDom树型结构的一个系列 该树型结构包括了CodeCormpileUnits 这就像是用DOM模式创建了一个XML文件
使用动态创建代码的最好方式是用示例来检查一下 例三展示了一个基本 Hello World 示例 该示例用源代码直接创建了代码因此你可以看到整个运行以及生成一个外部可执行文件的过程
例三 动态编码示例Private Sub btnTest _Click() Handles btnTest ClickCreate a piler Dim Comp As VBCodeProvider = New VBCodeProvider()Define the parameters for the code you want to pile Dim Parms As CompilerParameters = New CompilerParameters)We do want to create an executablerather than a DLL Parms GenerateExecutable = TrueThe piler will create an output assembly called Output Parms OutputAssembly =OutputThe piler won t treat warnings as errors Parms TreatWarningsAsErrors = FalseAdd any assembly you want to reference Parms ReferencedAssemblies Add( System Windows Forms dll )Define the code you want to runDim SampleCode As StringBuilder = New StringBuilder() SampleCode Append( Imports System Windows Forms+ vbCrLf) SampleCode Append( Module TestAssembly+ vbCrLf) SampleCode Append( Sub Main()+ vbCrLf) SampleCode Append( MessageBox Show(+ Chr( ) + _ Dynamically Created Code!+ _Chr( ) +)+ vbCrLf)SampleCode Append( End Sub+ vbCrLf)SampleCode Append( End Module+ vbCrLf)Define the code to run Dim Executable As CompilerResults = _ Comp CompileAssemblyFromSource(ParmsSampleCode ToString())Display error messages if there are any If Executable Errors HasErrors ThenFor Each Item As CompilerError In Executable ErrorsMessageBox Show(Item ErrorText)NextElseIf there aren t any error messagesstart theexecutable Process Start( Output )End IfEnd Sub
推荐阅读
- 钉钉怎么进入老师发的直播,钉钉群老师发起的直播怎么进入
- 用Jquery做多张商品轮播,用jquery实现轮播图
- 像素赛车竞速游戏大全视频,像素赛车游戏推荐
- php数据绑定 php连接指定数据库
- redislua脚本性能测试,redis lua调试
- 养成恋爱乙女向游戏,恋爱养成单机乙女游戏
- centos安装wordpress,centos安装gcc
- linux命令心得感悟 linux简单的心得体会
- 下载茄子的简单介绍