使用VB.NET开发自定义Windows控件

使用VB.NET开发自定义Windows控件,第1张

一 前言

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

注意 你或你的开发小组过去购买的 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® 控件?在 Visual Basic NET 中开发控件时有哪些方面不同于以往的 / 版?

二 为什么要开发你自己的控件? 为了限制 Windows 窗体TextBox 控件的文本类型 可以在窗体代码中添加该控件的KeyPress 事件处理程序 以拦截用户的每次击键并检查该键对应的字符能否进入 TextBox Private Sub TextBox _KeyPress(ByVal sender As Object _ ByVal e As System Windows Forms KeyPressEventArgs) _ Handles TextBox KeyPress If Not Char IsDigit(e KeyChar) Then e Handled = True Else e Handled = False End If End Sub 注意 单纯依靠捕捉击键事件是无法确保输入 TextBox 的文本全是数字的 因为用户有时不是直接向 TextBox 中敲入字符 而是通过剪贴板粘贴字符给 TextBox 何况 TextBox 文本的初值就有可能包含非法的字符 某些其它事件比如 TextChanged 等 或许能够捕捉到更多非法输入 但我更喜欢用 Validating 或者 Leave 事件 它们是在用户离开输入控件之后才对 TextBox 进行字符合法性检查 这么做诚然放弃了对用户输入的即时反应 却允许用户首先通过剪贴板输入 轻度犯规 的文本字符串 比如在禁止空格的输入框中粘贴 然后手工纠正输入框里的 犯规 字符 向控件中手工添加事件处理程序代码并不太难 可是当你面临更复杂的编程任务 比如检验邮寄地址或者汽车的 VIN # (车辆识别号码) 的字符合法性时 你还会感到如此轻松吗?此时你会希望把同一段事件处理程序用于多个窗体甚至多个项目 或者将它提供给开发小组的其他成员共享 然而 提取窗体中的代码片段 连同安装指南和控件的命名规则一起发布 却是一个恶梦的开端 好在天无绝人之路 你只要把它连同一个自定义控件发布 就不会遭遇这种恶梦了 因为此时用户界面和相关代码都位于独立的组件中 而组件的发布相对要容易得多 通过组件发布的代码片段在升级上也方便些 你只需发布新版的组件即可 再也不必通过种种渠道公布新的代码片段让程序员手工覆盖原先的代码了!

三 继承性如何改变了控件的开发? 在 NET 中的控件开发已经和 Visual Basic 大相径庭 其根本原因 就是 NET 引入了继承性 在 Visual Basic 中 你只能不用控件或者直接引用现成的控件来实现各种功能性 例如 为了创建前面提到的自定义文本输入框 你就要新建一个 ActiveX 控件 然后向其中增加一个 TextBox 注意 人们通常把这种编程思路称为 容器 (containment) 或者 委托 (delegation) 在 Visual Basic 中 用于模拟继承机制的非控件类也可以采用这种思路 此时 新建的 ActiveX 控件并不会如你所愿自动获得 TextBox 的某些属性 (比如 Text 属性) 这些属性只能由你编码实现 更糟的是 你必须用许多代码来确保 TextBox 始终占据整个窗体 你还得为新控件设计 resizing 事件处理程序 当然 经过一番折腾 你总会完成该控件的设计任务的 何况还有 ActiveX 控件界面向导能减轻你的负担 可是在 NET 环境下 整个任务的完成思路都会变得完全不同 继承性能避免控件开发中的某些重复代码 因为它能让 NET 控件直接获得任何其它控件的功能性 例如 为了创建自己的 TextBox 控件 你可以继承现有的 TextBox 控件 而不是 UserControl 控件 新控件继承了基类控件的全部功能性 因此你只需要对基类控件中没有的功能性编码即可 下面举一个实际的例子 以下代码能够创建一个自定义 TextBox 控件 它只允许用户输入数字字符 注意 为了运行这段代码 你只需在 Windows 应用程序 模板下新建一个 Visual Basic 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 Else 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 的功能性之一 注意 本控件对用户输入的要求十分苛刻 它只允许输入 至 的数字 也就是说 数字中的逗号 小数点甚至负号都是非法字符 在 Visual Basic 中设计本控件时 核心代码会和本范例一样长 可是用于处理控件的 resizing 事件和实现 TextBox 组件属性的代码也会有这么长 由此可见 NET 提供的继承性能够大大精简源代码 单凭这一点 NET 就已经令人叹服了 何况它还有许多其它优越性 更奇妙的是 凡是要求使用某一控件的地方 都能改用继承该控件而来的新控件 例如 在任何例程中要求 TextBox 的地方都能用你的 NumericTextBox 控件 不仅如此 从现有控件 而不是从 UserControl 类继承而来的新控件 不但具备基类控件的所有功能性 还能象基类控件一样使用继承得到的属性 方法和事件 因此 任何程序员只要学过标准的 TextBox 控件 就知道如何使用 NumericTextBox 控件 允许继承现有的类/控件 是从Visual Basic 到 NET 的一个重大飞跃 可是 NET 的优点又何止于此!在 NET 环境下Windows 窗体控件不但拥有不少强大的功能 而且它们的创建也比在老版本 Visual Basic 中容易得多

lishixinzhi/Article/program/net/201311/14940

推荐先学basic,微软从DOS机开始就自带basic,可见这门编程语言的通用性,而且basic非常的简单易学,能完成的功能也非常多。所以楼主应该从visual basic开始学起。

学编程,学的不是某一门语言,而是要学习一种程序化的思维方式,这种思想学会了,不管是什么语言都可以很快学会。编程语言只是一种工具,程序员所做的是用这种工具去谱写人类的未来。希望楼主能明白编程的精髓,而不是一味的按照书上所提供的例子一个一个漫无目的的学习。

一、什么是Visual Basic

visual Basic 60中文版是一种应用程序开发工具,它的功能就是用来编程——Windows 下的应用程序。

”Visual”一词在计算机程序设计领域中意为:”可视化的”,Microsoft公司的其冠以Visual的产品都含有这个意思。VB就是可视化程序设计语言。

可视化程序设计指的是一种开发图形用户界面的方法,使用这种方法,程序员不须编写大量代码去描述界面元素的外观和位置,只要把预先建立的界面元素用鼠标拖放到屏幕上适当的位置即可。

Visual Basic在原有BASIC语言的基础上进一步发那,至今包含了数百条语句、函数及关键词,其中很多和Windows GUIe直接关系。专业人员可以用Visual Basic实现其他任何Windows编程语言的功能,而初学者只要掌握 几个关键词就可以建立实用的应用程序。

二、Visual Basic的基本特点

VB的基本特点有两个:

1)VB提供可视化的编程工具

VB向程序员提供图形对象(窗体,控件,菜单等)进行应用程序的界面设计,应用程序的界面相当于用工具画出来的,大大简化了程序员的编程工作。

2)程序采取“事件驱动”方式

VB改变了程序的机制,没有传统意义上的主程序,使程序执行的基本方法是有“事件”来驱动子程序(或过程)的运行,如用鼠标点击命令按扭,就产生了一个命令按扭的“单击事件”,响应的执行一段程序(事件过程:Command1_Click())

程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。

程序员需要学习:

1、掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;

2、理解计算机的组成以及各主要部件的性能指标;

3、掌握 *** 作系统、程序设计语言的基础知识;

4、熟练掌握计算机常用办公软件的基本 *** 作方法;

5、熟练掌握基本数据结构和常用算法;

6、熟练掌握C程序设计语言,以及C++、Java、Visual Basic中的一种程序设计语言;

7、熟悉数据库、网络和多媒体的基础知识;

8、掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;

9、了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;

10、了解信息化、计算机应用的基础知识;

11、正确阅读和理解计算机领域的简单英文资料。

程序员必备技能:

1、熟练开发工具

做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。

而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。

其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。

另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。

2、熟知数据库

作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。

虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库 *** 作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。

3、了解 *** 作系统

当前主流的 *** 作系统是Windows,Linux/Unix,熟练地使用这些 *** 作系统是必须的,但只有这些还远远不够。

要想成为一个真正的编程高手,需要深入了解 *** 作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。

Linux作为开发源码的 *** 作系统,是一个很好的学习平台,Linux几乎具备了所有现代 *** 作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。

在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式。

从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。

至少,需要了解ISO七层协议模型,IP/UDP/TCP/>

4、明白DCOM/CORBA/XML/WEBServices存在的意义

随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。

XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。

5、不要将软件工程与CMM分开

大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员。

一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能。

如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。

6、需求理解能力

程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求。

要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。

7、模块化思维能力

作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。

这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。

就业方向:

1、网络开发

现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。

2、企业软件开发

JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发。

3、系统软件

C语言、C++、Object-C这些软件更多是用在系统软件开发,嵌入式开发的方面。

当然,这分类不是绝对,像JAVA、C#、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。

但所以在刚入门的时候,建议先为自己选择一种合适的开发工具,“专注地投入学习,全力一击”。

扩展资料:

会编程、会计算机语言就能加入互联网发展大潮中,享受数字经济发展的红利,一时间社会上的程序员培训机构都变得格外火爆。

但是现在,专家的数据分析结果告诉你:若想跟上数字经济发展的步伐,光会编程可不行,这个行业现在紧缺高端的、综合型人才。

11月22日下午,清华大学经管学院互联网发展与治理研究中心与领英联合发布《中国经济的数字化转型:人才与就业》,揭示我国数字人才现状与趋势。

报告显示我国数字经济发展面临人才短缺的挑战,但这种短缺主要体现在拥有中高级专业技能数字人才的比例不高,拥有人工智能、智能制造等前沿技术的人才更是少之又少。

与美国、英国、加拿大等国家相比,中国的数字人才储备尚有很大差距。

此外,报告根据对人才需求的数据分析,结果显示我国数字人才的技能需求不再强调单一编程技能,更加看重技术、管理和领导力等综合技能。

2015年,我国从事信息传输、软件和信息技术服务相关工作的人数约350万,但其中中高端人才,特别是前沿技术的数字人才并不多。根据领英中国智库的研究,在人工智能领域,美国的从业者数量在85万人以上,印度15万,英国14万,中国只有5万多人。

报告负责人、清华大学经济管理学院副院长陈煜波教授表示,我国目前在大数据与人工智能领域人才缺口明显。

他解释说,目前中国85%以上的数字人才分布在产品研发类,而深度分析、先进制造、数字营销等职能的人才加起来只有不到5%,存在较大缺口,新兴技术人才和创新型人才培养方面存在滞后和不足。

这份研究报告的基础数据来自领英在中国的3600万个人用户,这些用户毕业于15万多所国内外院校,分布在364万家企业,拥有超过23万项技能。

陈煜波研究团队从中筛选了72万数字人才,多维度提取用户画像并跟踪其职业轨迹,以此预测不同地区的人才流向、雇佣率、受雇主欢迎的技能等人才趋势层面的信息。

陈煜波说,根据数据分析结果,整体来看,虽然编程技能和数据分析技能需求占据主导,然而随着数字产业走向成熟,企业除了强调编程技能,也逐步更加看重人才的技术、管理和领导力等综合技能。

近年间,项目管理、产品运营等“技术+管理”类技能的需求呈现出明显的上升趋势,懂技术、懂管理的人才被认为是“一将难求”。

领英中国代理总裁曾志恒也提醒,如果你有兴趣向数字职能转型,不能仅仅专注于自己的技术能力,沟通和领导力等软性技能将成为你脱颖而出的关键。

陈煜波希望这些研究结果能为教育行业和政府部门提供借鉴。他说,教育行业可根据职位的供需趋势更好地规划人才培养的方向,政府也可更好地了解人才流动方向、技术缺口等,以此制定有针对性的引才策略。

程序员岗位职责:

1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。

2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。

3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。

4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。

5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。

6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。

7、负责相关技术文档的拟订。

8、负责对业务领域内的技术发展动态进行分析研究。

相关书籍:

很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 9的书。

其实除了前9本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。

下面就按照各本书的推荐数排列。

1、《代码大全》 史蒂夫·迈克康奈尔

2、《程序员修炼之道》

3、《计算机程序的构造和解释》

4、《算法导论》

5、《重构:改善既有代码的设计》

6、《设计模式》

7、《人月神话》

8、《计算机程序设计艺术》

9、《编译原理》(龙书)

10、《活着》

参考资料:

百度百科-程序员

参考资料:

人民网-近四成程序员单身 平均年薪达19万元

参考资料:

人民网-会编程就能当码农? 行业紧缺高端、综合型人才

以上就是关于使用VB.NET开发自定义Windows控件全部的内容,包括:使用VB.NET开发自定义Windows控件、我想学计算机编程,但我是零基础,。应该先学什么,在学什么啊求人指点迷津、什么是basic等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9514471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存