返回顶部
首页 > 资讯 > 精选 >VB.NET如何开发控件
  • 706
分享到

VB.NET如何开发控件

2023-06-17 20:06:04 706人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关VB.NET如何开发控件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Microsoft® VB® 的组件支持历来都是它的一大卖点,于是第三方软

这篇文章将为大家详细讲解有关VB.NET如何开发控件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Microsoft® VB® 的组件支持历来都是它的一大卖点,于是第三方软件开发商们纷纷开发出各种具有新功能性的可视控件 (也有少数非可视控件) 供 VB 程序员选用。这种特殊的 VB 开发形式创造了无数的第三方控件——有的是共享软件/自由软件,有的则被放到柜台上销售。现在,人们甚至可以直接用 VB 开发自己的可视/非可视组件了。于是,组件的数量迅速增长,其中相当一部分都是程序员 (或者开发小组) 为针对自己的开发任务设计的。

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

在 .NET 编程世界里,人们对自定义 UI 组件的需求依然存在,只不过它们的创建过程有所不同。本文将探讨两个问题:为什么要创建自己的 Microsoft windows® 控件?在 VB.NET开发控件时有哪些方面不同于以往的 5.0 / 6.0 版?

为什么要开发你自己的控件?

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

Private Sub TextBox1_KeyPress(ByVal sender As Object, _  ByVal e As System.Windows.FORMs.KeyPressEventArgs) _  Handles TextBox1.KeyPress  If Not Char.IsDigit(e.KeyChar) Then  e.Handled = Tru Else  e.Handled = False End If  End Sub

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

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

继承性如何改变了控件的开发?

在VB.NET开发控件已经和 VB6.0大相径庭。其根本原因,就是 .NET 引入了继承性。在 VB6.0中,你只能不用控件或者直接引用现成的控件来实现各种功能性。例如:为了创建前面提到的自定义文本输入框,你就要新建一个 ActiveX 控件,然后向其中增加一个 TextBox 。

注意 人们通常把这种编程思路称为“容器” (containment) 或者“委托” (delegation)。在 VB6.0中,用于模拟继承机制的非控件类也可以采用这种思路。

此时,新建的 ActiveX 控件并不会如你所愿自动获得 TextBox 的某些属性 (比如 Text 属性);这些属性只能由你编码实现。更糟的是,你必须用许多代码来确保 TextBox 始终占据整个窗体;你还得为新控件设计 resizing 事件处理程序。当然,经过一番折腾,你总会完成该控件的设计任务的,何况还有 ActiveX 控件界面向导能减轻你的负担。可是在 .NET 环境下,整个任务的完成思路都会变得完全不同。

VB6.0提供了一个附加程序 (add-in) ,它能自动添加和映射控件属性,以简化控件的开发。

继承性能避免控件开发中的某些重复代码,因为它能让 .NET 控件直接获得任何其它控件的功能性。例如:为了创建自己的 TextBox 控件,你可以继承现有的 TextBox 控件,而不是 UserControl 控件。新控件继承了基类控件的全部功能性,因此你只需要对基类控件中没有的功能性编码即可。下面举一个实际的例子。以下代码能够创建一个自定义 TextBox 控件,它只允许用户输入数字字符:

注意 为了运行这段代码,你只需在“Windows 应用程序”模板下新建一个 VB .NET 项目,然后就能在 IDE 自动生成的空白窗体中试验新控件了。在项目中新建一个类 NumericTextBox ,用下面的代码替换 NumericTextBox 类文件的内容,编译该项目。***,在菜单中选择工具->自定义工具箱,选中先前编译项目得到的 .exe 文件,就能把新控件添加到工具箱了。

Public Class NumericTextBox  Inherits System.Windows.Forms.TextBox  Protected Overrides Sub OnKeyPress(ByVal e As   System.Windows.Forms.KeyPressEventArgs)  If Not Char.IsDigit(e.KeyChar) Then  e.Handled = True Els  e.Handled = False End If  End Sub  End Class

对本例来说,以上代码已经足够了。如果你还觉得它不够完善的话,请改用下列代码,它运用一种奇妙的布尔逻辑减少了代码行数:

Public Class NumericTextBox  Inherits System.Windows.Forms.TextBox  Protected Overrides Sub OnKeyPress(ByVal e As _  System.Windows.Forms.KeyPressEventArgs)  e.Handled = Not Char.IsDigit(e.KeyChar)  End Sub  End Class

现在,你的新控件已经正确显示在窗体中了。它象 TextBox 一样处理事件,并且拥有与 TextBox 一样的方法、属性。你甚至不需更多的编码就能实现对新控件的数据绑定,因为这也是基类控件 TextBox 的功能性之一。

注意 本控件对用户输入的要求十分苛刻:它只允许输入 0 至 9 的数字,也就是说,数字中的逗号、小数点甚至负号都是非法字符。我将在下一篇文章中介绍一个功能更强的输入验证程序。

在VB.NET开发控件时,核心代码会和本范例一样长,可是用于处理控件的 resizing 事件和实现 TextBox 组件属性的代码也会有这么长。由此可见,.NET 提供的继承性能够大大精简源代码。单凭这一点,.NET 就已经令人叹服了,何况它还有许多其它优越性。更奇妙的是,凡是要求使用某一控件的地方,都能改用继承该控件而来的新控件。例如:在任何例程中要求 TextBox 的地方都能用你的 NumericTextBox 控件。不仅如此,从现有控件,而不是从 UserControl 类继承而来的新控件,不但具备基类控件的所有功能性,还能象基类控件一样使用继承得到的属性、方法和事件。因此,任何程序员只要学过标准的 TextBox 控件,就知道如何使用 NumericTextBox 控件。允许继承现有的类/控件,是从VB6.0到 .NET 的一个重大飞跃,可是 .NET 的优点又何止于此!只要你认真学习本系列文章所提供的范例,你就会发现,在 .NET 环境下Windows 窗体控件不但拥有不少强大的功能,而且它们的创建也比在老版本 VB 中容易得多。

关于“VB.NET如何开发控件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: VB.NET如何开发控件

本文链接: https://lsjlt.com/news/293169.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • VB.NET如何开发控件
    这篇文章将为大家详细讲解有关VB.NET如何开发控件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Microsoft® VB® 的组件支持历来都是它的一大卖点,于是第三方软...
    99+
    2023-06-17
  • 为什么要VB.NET开发控件
    这篇文章给大家分享的是有关为什么要VB.NET开发控件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。为什么要VB.NET开发控件?为了限制Windows窗体TextBox控件的文本类型,可以在窗体代码中添加该控件...
    99+
    2023-06-17
  • VB.NET如何删除控件
    这篇文章给大家分享的是有关VB.NET如何删除控件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。当一个控件是另一个控件的子控件,例如pictruebox里面又有3个子pictruebox,子控件的名字存储在已知的...
    99+
    2023-06-17
  • VB.NET如何创建控件
    小编给大家分享一下VB.NET如何创建控件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在新建VB.NET工程时有下面几个选项: 类库:一组没有GUI的类库,类似...
    99+
    2023-06-17
  • VB.NET如何使用NotifyIcon控件
    这篇文章给大家分享的是有关VB.NET如何使用NotifyIcon控件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本文所使用的编程环境是Microsoft Visual Studio 2005,首先打开 Vis...
    99+
    2023-06-17
  • VB.NET如何使用MonthCalendar控件
    小编给大家分享一下VB.NET如何使用MonthCalendar控件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!VB.NET使用MonthCalendar控件下...
    99+
    2023-06-17
  • VB.NET中如何使用Radiobutton控件
    本篇文章给大家分享的是有关VB.NET中如何使用Radiobutton控件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.创建一组选项按钮选项按钮一般是以组的形式存在的,一般...
    99+
    2023-06-17
  • VB.NET中如何使用COMBOBOX控件
    小编给大家分享一下VB.NET中如何使用COMBOBOX控件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Visual Basic.NET是基于微软.NET Fr...
    99+
    2023-06-17
  • VB.NET如何使用Data Report控件
    这篇文章将为大家详细讲解有关VB.NET如何使用Data Report控件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.VB.NET Data Report控件使用方法由于是VB自带的控件,所以使用相...
    99+
    2023-06-17
  • VB.NET中如何使用TreeView控件
    这篇文章将为大家详细讲解有关VB.NET中如何使用TreeView控件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、准备知识了解 TreeView控件的基本使用,掌握如何添加树状结构的数...
    99+
    2023-06-17
  • 如何使用VB.NET控件数组
    这篇文章主要介绍了如何使用VB.NET控件数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、关于VB.NET控件数组控件数组”是VB6中一项简单而实用的技术,通过对控件的...
    99+
    2023-06-17
  • VB.NET中如何使用ListBox控件
    这篇文章给大家分享的是有关VB.NET中如何使用ListBox控件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在windows中拖放通常是复制或移动文件,windows完全支持该功能,而且对许多用户来说这也是操...
    99+
    2023-06-17
  • 如何运用VB.NET控件操作文件
    这篇文章主要介绍如何运用VB.NET控件操作文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!显示文件因为不同文件的存储格式的差异,所以,只有用适当的方法才能正确的显示不同的文件。表现在表层,也就是不同的文件后缀名不...
    99+
    2023-06-17
  • VB如何开发定制控件
    这篇文章主要介绍了VB如何开发定制控件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们的定制类是通过继承UserControl类而生成的,由于UserControl也是由继...
    99+
    2023-06-17
  • VB.NET如何实现事件触发
    这篇文章主要为大家展示了“VB.NET如何实现事件触发”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET如何实现事件触发”这篇文章吧。VB.NET中的事件是一个非常重要的概念。对于初学者...
    99+
    2023-06-17
  • ASP.NET如何自定义控件开发
    这篇文章主要为大家展示了“ASP.NET如何自定义控件开发”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET如何自定义控件开发”这篇文章吧。该控件的功能如下:显示服务端时间,并不停更新...
    99+
    2023-06-17
  • vb.net如何实现动态控件数组
    这篇文章主要介绍vb.net如何实现动态控件数组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!VB.NET控件数组问题1、在form的头部定义一个公共的ArrayList类型的变量Dim m_items As New...
    99+
    2023-06-17
  • VB.NET如何使用水晶报表控件
    这篇文章给大家分享的是有关VB.NET如何使用水晶报表控件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Crystal Reporter(水晶报表)做为一个优秀的报表软件,水晶报表是实际应用中最多的方案。在这一节...
    99+
    2023-06-17
  • VB.NET Textbox控件怎么用
    今天就跟大家聊聊有关VB.NET Textbox控件怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。VB.NET编程语言是一款面相对象的开发语言。在这一语言中,有很多控件的使用技...
    99+
    2023-06-17
  • VB.NET NotifyIcon控件怎么用
    小编给大家分享一下VB.NET NotifyIcon控件怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本文所使用的编程环境是Microsoft Visual...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作