首页 > 编程 > .NET > 正文

从头创建 Visual Basic .NET 控件 (八)

2024-07-10 13:05:11
字体:
来源:转载
供稿:网友
第 7 步:生成和测试控件
现在 trafficlight 控件的设计就完成了。选择 build | build mycontrols(生成 | 生成 mycontrols),以创建最终的控件库。

要测试控件,我们需要一个 windows 窗体项目。您可以在其他解决方案中执行此操作,但在开发控件所用的解决方案中执行会更容易。从菜单中选择 file | add project | new project(文件 | 添加项目 | 新项目)。选择 windows application(windows 应用程序)项目类型,将项目命名为 testtrafficlight。单击 ok(确定),启动测试所需的 windows 应用程序。

必须先将 trafficlight 控件放到工具箱中,才能将其拖放到测试应用程序的空白窗体 1 中。右键单击工具箱中的 windows 窗体选项卡,然后选择 customize toolbox(自定义工具箱)。选择 .net framework components(.net framework 组件)选项卡,然后单击 browse(浏览)按钮。浏览到您的 mycontrols 项目所在的位置,然后转到该项目的 /bin 目录。选择 mycontrols.dll 组件并单击 ok(确定)。现在,该对话框应如图 2 所示。



图 2:在 customize toolbox(自定义工具箱)对话框中,trafficlight 控件被选中。

您可以看到 trafficlight 控件旁边有一个复选标记。单击 ok(确定)按钮,在工具箱的 windows forms(windows 窗体)选项卡上,trafficlight 控件将出现在控件列表的底部。图 3 显示了底部为 trafficlight 控件的工具箱。



图 3:工具箱底部的 trafficlight 控件

现在,您可以将 trafficlight 控件拖放到 testtrafficlight 的空白窗体 1 中。默认情况下,它被命名为 trafficlight1。您可以调整控件的大小,重新设置控件的属性,包括 status 属性,该属性有一个下拉菜单,菜单中包含该属性的三个可能的值。请注意,调整控件的大小或更改其属性时,控件将在设计器中自动刷新。

要恢复属性的默认值,请将 status 属性更改为 statusred。然后,右键单击 properties(属性)窗口中的 status(状态)属性,并选择 reset(重置),如图 4 所示。该属性将更改回 statusgreen。如果将 borderwidth 属性设置为 1 之外的其他值,也可以使用同样的方法恢复其默认值。



图 4:properties(属性)窗口中 status(状态)属性的 reset(重置)选项。请注意窗口底部有关 status(状态)属性的说明。

如果需要,还可以为控件插入 statuschanged 事件。然后,可以使用该事件中的以下代码行查看更改后的状态:

msgbox("新状态为 " & newstatus.tostring)

要在操作中测试该控件,您需要启动 testtrafficlight 项目。此时,它还不是该解决方案的启动项目,因此您需要解决它。在 solution explorer(解决方案资源管理器)中,右键单击 solution(解决方案)名称 - solution explorer(解决方案资源管理器)中的第一行。选择 properties(属性),然后将 single startup project(单启动项目)设置从 mycontrols 更改为 testtrafficlight,然后单击 ok(确定)。

按 f5 键启动该项目。将显示带有 trafficlight 控件的窗体。测试控件:按下不同的灯,查看它们是否亮起。您还可以测试 borderwidth 属性,尝试在代码中设置灯的 status 属性。

小结
尽管 trafficlight 是一个简单的控件(虽然曾有开发人员要把它用到真实的项目中),但它却显示了开发复杂控件所需要的所有原理,包括:

在控件中添加属性。
使用默认值和说明,使属性与 visual studio ide 协调。
在 paint 事件中插入逻辑以绘制控件。
在绘图逻辑中使用 gdi+。
为控件设置位图,以便在工具箱中显示。
创建复杂控件的关键在于熟悉 gdi+ 的绘图能力。如果理解了 trafficlight 绘制边框和彩色圆的原理,那么您就有了一个好的起点。关键是,有了 visual basic .net,即使象我这么懒惰的程序员也能创建高级的 windows 窗体。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表