| |
|
|
| .NET框架组件太大了,比任何以前所写的封装功能的库都要大。这样有好处,因为它大幅削减了建立应用程序所需编写的代码,但是也使我们不可能完全了解该框架组件。但是我们很容易从中找到一些有用的技巧,本专题从窗体嵌套、处理数据行、给控件绑定颜色、修改数据窗体向导、在.NET框架组件中显示时间,共五个方面详细介绍使用VB.NET的五个实用技巧。不足之处欢迎大家留言补充,谢谢! |
|
|
|
|
|
 |
| 技巧之一:窗体嵌套 |
经验丰富的Visual Basic开发者知道多文档界面(MDI)应用程序能够包含子窗体,那些子窗体由MDI父窗体管理。但是如果没有MDI的能力你怎样实现包含嵌套窗体?例如一个MDI子窗体也可能需要包含另一个窗体。有时能够使用用户控件(UserControl)实现这种功能,但是如果你真的需要把一个窗体嵌套进另一个窗体,有多种方法可以实现。窗体衍生自Control类,这意味着它能被放入另一个窗体的控件集合中,使用如下的逻辑:
Dim f As New frmEmbed2()
Me.Controls.Add(f)
f.Show() |
但是很不幸,这段代码将会导致一个运行时(runtime)异常... |
| 『详细内容』 |
| |
|
|
|
|
| 技巧之二:处理数据行 |
| Windows窗体中的数据绑定列表框和组合框很节省时间。典型的代码如下(假定已经建立了SqlDataAdapter或者其它部件获取数据):
Dim ds As New DataSet()
SqlDataAdapter1.Fill(ds, "Customers")
ListBox1.DataSource = ds.Tables("Customers")
ListBox1.DisplayMember = "CompanyName"
ListBox1.ValueMember = "CustomerID" |
在这种情况下,代码使用Northwind数据库的顾客记录工作。DisplayMember属性设置为你希望用户在列表框中看到的记录字段,它是customers表的CompanyName.通常ValueMember属性设置为数据表中的一个键字段,对于customer来说是CustomerID.一旦用户选择了列表框中的一行,很容易使用列表框的SelectedValue属性获得键字段...
|
| 『详细内容』 |
|
 |
|
|
|
|
|
 |
| 技巧之三:给控件绑定颜色 |
数据绑定能应用于控件的任何属性。我看到过很多人提到能够绑定文本框的背景颜色到数据项,举个例子,超期的帐号的背景色显示红色。 但是如果你试图使用数据集或者数据表实现该功能,将会遇到问题。数据行只能保持受到限制的数据类型,并且不支持Color类型。如果你不能把颜色存储在数据中怎么能绑定颜色呢? 有些途径可以解决这个问题,但是最简单的是用绑定到自定义数据对象代替绑定到数据表。自定义业务对象的属性可能是Color型的,这样的属性能绑定到控件的BackColor属性。 为了演示,我定义了下面的自定义事务对象... |
| 『详细内容』 |
| |
|
|
|
|
| 技巧之四:修改数据窗体向导 |
使用数据窗体向导(Data Form Wizard)你能迅速获得文件操作程序窗体。为了使用它,选择Project菜单的Add New Item,接着选择Data Form(数据窗体)。该向导将一步一步帮助你指定希望的数据,并为那些数据建立一个文件操作程序。图7显示了一个从Northwind数据库的Products表中产生的数据窗体。 但是这种自动生成程序有一个重要的限制。如果被访问的数据有任何字段不能为空(因为数据库大纲不允许空值),那么向导生成的程序不能添加记录。当点击Add按钮时,将出现错误信息,提示记录中的第一个字段不允许为空(如果你没有最新的服务包,你也许看不到该错误信息,但是程序拒绝添加记录)... |
| 『详细内容』 |
|
 |
|
|
|
|
|
 |
| 技巧之五:在组件中显示时间 |
开发过程过程中我们通常对特定代码片运行所花的时间很感兴趣。当然有一些标准程序和代码工具可以查看到它,但是有经验的Visual Basic 6.0开发者有更快的办法。仅仅捕捉开始时间(使用Now关键字)和终止时间(再次使用Now关键字),两种相减,就能知道结果了。 如果使用Visual Basic .NET编写,首先尝试的代码可能是这样的:
Dim StartTime As DateTime = Now
' {code to check for timing goes here}
Dim EndTime As DateTime = Now
Console.WriteLine((StartTime - EndTime).ToString) |
但是这段代码的最后一行有语法错误。错误消息是"日期类型没有定义'-'操作符".这意味着我们不能执行减法。日期数据类型不支持减法操作,那么我们怎么得到两次时间的差别呢... |
| 『详细内容』 |
| |
|
|
|
|