从过去到未来、 从Visual和Basic到Net (二)
5. 读取注册表。Windows中的注册表是如此重要,象一个巨大宝藏永远神秘和让你小心翼翼。有时我们必须在注册表中取或放一些信息。但VB提供的函数只能访问HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\key中的值,至于之外的你需要调用其它的API函数来实现,我知道多数的人都是通过自己的模块和类来解决这个问题。
过去的VB
======================================================
你可以去下面的网址中获得帮助和代码。
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=1881
现在的VB.NET
======================================================
Private Sub btnWriteRegistry_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs)
Handles btnWriteRegistry.Click
Dim aKey As RegistryKey
aKey = Registry.CurrentUser.CreateSubKey _
("Software\VBDotNetDemo")
aKey.SetValue("VBDotNetDemo", "VB.NET")
MessageBox.Show("The value of the new key " _
& "'HKEY_CURRENT_USER\Software\" & _
"VBDotNetDemo' is: " _
& aKey.GetValue("VBDotNetDemo", _
"Default value"), _
"Key Created Successfully")
End Sub
6. 快速展现你的数组数据到一个ListBox,如果你手上有一个ADO的记录集,那么你可以很快的绑定到带有数据绑定的感知控件上,这些控件带着Data的字样比如:DataList, DataGrid、DattaRetpeater。ADO刚出来时以前有许多支持RDO的数据控件是不能兼容两者的。
过去的VB
======================================================
Private Sub cmdPopulateList_Click()
Dim listItems(4) As String
Dim i As Integer
listItems(0) = "One"
listItems(1) = "Two"
listItems(2) = "Three"
listItems(3) = "Four"
listItems(4) = "Five"
List1.Clear
For i = 0 To 4
List1.AddItem listItems(i)
Next
End Sub
现在的VB.NET
======================================================
Private Sub btnPopulateList_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles btnPopulateList.Click
Dim listItems() As String = {"One", "Two", _
"Three", "Four", "Five"}
ListBox1.DataSource = listItems
End Sub
有关于DataSource我们应当不陌生,VS。NET中它已成为一个常用的属性,在VB6中它只是被称为数据绑定专门使用的一个属性。ASP+中的更多控键支持DataSource属性,并且不会要求一定是数据库连接或Select获得的数据。这个数据源可以是任何形式的数据库源。
7. 产生一个随机数。如何产生一个随机数,并且让它只在一定的范围中变动。这是个很常用的东东,虽然我们已不再自己写一些拙劣的简单游戏,但还依然记得刚刚接触电脑时,为实现产生一个随机数而产生的激动和兴奋。
过去的VB
======================================================
Private Function getRandomNumber _
(low As Long, high As Long) As Long
Randomize(Now())
getRandomNumber = CInt((high - low + 1) * _
Rnd + low)
End Function
现在的VB.NET
======================================================
Private Function getRandomNumber _
(ByVal low, ByVal high) As Integer
getRandomNumber = New System.Random(). _
Next(low, high)
End Function
8. VB6几乎成为COM最好的搭档,在所有VB6的新功能中COM方面的功能可以让你惊叹。COM虽然是二进制的代码,但始终有些人认为COM自己是有生命的。GUID是什么东东呢。不过VB.NET的实现太简单了吧,会给人一种错觉:dotnet是一种更COM的技术。
过去的VB
======================================================
Private Declare Function CoCreateGuid Lib _
"ole32.dll" (buffer As Byte) As Long
Private Declare Function StringFromGUID2 Lib _
"ole32.dll" (buffer As Byte, ByVal lpsz As Long, _
ByVal cbMax As Long) As Long
Private Function getGUID() As String
Dim buffer(15) As Byte
Dim s As String
Dim ret As Long
s = String$(128, 0)
ret = CoCreateGuid(buffer(0))
ret = StringFromGUID2(buffer(0), StrPtr(s), 128)
getGUID = Left$(s, ret - 1)
End Function
现在的VB.NET
======================================================
Private Function getGUID() As String
GetGUID = "{" & _
System.Guid.NewGUID().ToString & "}"
End Function
9. 增加一个变量的值。以前很羡慕C或Java的 i++; ++i ; k += 2 这样简捷的语法,现在VB.NET也支持这样的语法了,尽管有些违背VB简单的宗旨,不过会有更多的人喜欢在VB中也写这样的代码。
过去的VB
======================================================
MyValue = MyValue + 10
现在的VB.NET
======================================================
MyValue += 10
同样的还有:
MyValue -= 10
MyValue /= 10
MyValue *= 10