原理分析VB.NET开发控件

经过长时间学习VB.NET开发控件,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。Microsoft®VB®的组件支持历来都是它的一大卖点,于是第三方软件开发商们纷纷开发出各种具有新功能性的可视控件(也有少数非可视控件)供VB程序员选用。这种特殊的VB开发形式创造了无数的第三方控件——有的是共享软件/自由软件,有的则被放到柜台上销售。现在,人们甚至可以直接用VB.NET开发控件,自己的可视/非可视组件了。于是,组件的数量迅速增长,其中相当一部分都是程序员(或者开发小组)为针对自己的开发任务设计的。

注意你或你的开发小组过去购买的MicrosoftActiveX控件往往无须修改或重写就能直接移植到微软.NET环境下。具体而言,只要进入MicrosoftVisualStudio®.NET的IDE(集成开发环境)环境,依次从菜单中选择:工具Tool->自定义工具箱CustomizeToolbox),或者使用.NET框架实用程序Aximp.exe(ActiveX控件导入程序),就能让.NET应用程序中调用现成的ActiveX控件了。可是,一旦某个控件在.NET环境下工作不正常,它的作者恐怕就应该考虑升级该控件了。所以,为了能在.NET环境中正常使用购来的第三方ActiveX控件,就应该到开发商的Web网站去看看它有没有出升级版或者.NET版。在.NET编程世界里,人们对自定义UI组件的需求依然存在,只不过它们的创建过程有所不同。

为什么要VB.NET开发控件?

为了限制Windows窗体TextBox控件的文本类型,可以在窗体代码中添加该控件的KeyPress事件处理程序,以拦截用户的每次击键并检查该键对应的字符能否进入TextBox:

 
 
 
  1. Private Sub TextBox1_KeyPress(ByVal sender As Object, _  ByVal e 
    As System.Windows.Forms.KeyPressEventArgs) _  Handles TextBox1.KeyPress  
  2. If Not Char.IsDigit(e.KeyChar) Then  
  3. e.Handled = True 
  4. Else  
  5. e.Handled = False 
  6. End If  
  7. End Sub 

注意单纯依靠捕捉击键事件是无法确保输入TextBox的文本全是数字的,因为用户有时不是直接向TextBox中敲入字符,而是通过剪贴板粘贴字符给TextBox;何况TextBox文本的初值就有可能包含非法的字符。某些其它事件比如TextChanged等,或许能够捕捉到更多非法输入,但我更喜欢用Validating或者Leave事件,它们是在用户离开输入控件之后才对TextBox进行字符合法性检查。这么做诚然放弃了对用户输入的即时反应,却允许用户首先通过剪贴板输入“轻度犯规”的文本字符串,比如在禁止空格的输入框中粘贴“3425234323422342”,然后手工纠正输入框里的“犯规”字符。

向控件中手工添加事件处理程序代码并不太难,可是当你面临更复杂的编程任务,比如检验邮寄地址或者汽车的VIN#(车辆识别号码)的字符合法性时,你还会感到如此轻松吗?此时你会希望把同一段事件处理程序用于多个窗体甚至多个项目,或者将它提供给开发小组的其他成员共享。然而,提取窗体中的代码片段,连同安装指南和控件的命名规则一起发布,却是一个恶梦的开端。好在天无绝人之路,你只要把它连同一个自定义控件发布,就不会遭遇这种恶梦了,因为此时用户界面和相关代码都位于独立的组件中,而组件的发布相对要容易得多。通过组件发布的代码片段在升级上也方便些:你只需发布新版的组件即可,再也不必通过种种渠道公布新的代码片段让程序员手工覆盖原先的代码了!

【编辑推荐】

  1. 自己动手修改VB.NET支付宝接口
  2. 事例概括VB.NET Display方法
  3. 描述VB.NET IDisplayer接口
  4. 如何快速掌握VB.NET控件数组
  5. 详细概括VB.NET实现动态菜单的方法
免责声明:文章内容不代表本站立场,仅供读者参考。产品相关技术问题请发送工单。 本文链接:https://www.idc.net/help/408634/

为您推荐

开源数据收集引擎 Logstash 讲解和示例讲解

一、概述 Logstash 是一个开源的数据收集和日志处理工具,它是 Elastic Stack(ELK Stack)的一部分,用于从各种数据源中采集、转换和传输数据,以帮助分析和可视化大规模数据。Logstash 通常与 Elasticsearch 和 Ki...

八个开源免费单点登录(SSO)系统

单点登录(SSO)是一个登录服务层,通过一次登录访问多个应用。使用SSO服务可以提高多系统使用的用户体验和安全性,用户不必记忆多个密码、不必多次登录浪费时间。 下面推荐一些市场上最好的开源SSO系统,可作为商业SSO替代。 1.Authelia https://github.com/authelia/authelia ...

浅谈HBase数据结构和系统架构

Part 01 LSM树模型 常见的的关系型数据库,如MySQL、SQL Server、Oracle等,使用B+ Tree作为数据存储与索引的基本结构,非叶子节点只存放索引数据,叶子节点存放所有数据和指向相邻节点的指针,具有高效的范围查询和稳定的查找效率,以及具有较小的读放大和空间放大。采用磁盘随机读写方式,且以磁盘数...

微软Radius平台重构现代应用程序部署

微软的 Azure 孵化团队日前推出一个叫 Radius 的新应用平台。Radius 平台可用于在 Kubernetes、公共云和边缘环境中运行各种现代应用程序。 Radius 是一个开源项目,最初支持的应用程序运行时包括Kubernetes、Azure和AWS,以后还会支持诸如谷歌云平台等云环境。 Mark Russ...

Ext JS3.0正式版发布

Ext JS3.0在经历数次RC版之后,extjs.com终于发布3.0的正式版。总体而言,较2.0改进不大,依然还是原理的组件模型,具体更新及改进如下: ◆提供了参照DWR后与后台的通讯包Direct,支持具有明显的REST风格的CRUD服务 ◆一系列的新的组件和例子,包括有图表(Charting, By YUI F...
返回顶部