欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

vb.net語法分析器 語法分析器代碼實(shí)現(xiàn)

VB.NET中treeview的使用

Nodes 集合包含分配給 TreeView 控件的所有 TreeNode 對象。此集合中的樹節(jié)點(diǎn)稱作根樹節(jié)點(diǎn)。隨后添加到根樹節(jié)點(diǎn)上的任何樹節(jié)點(diǎn)稱作子節(jié)點(diǎn)。由于每個(gè) TreeNode 都可以包含其他 TreeNode 對象的集合,您可能會在循環(huán)訪問集合時(shí)覺得很難確定自己在樹結(jié)構(gòu)中的位置。您可以使用 PathSeparator 字符串值來分析 TreeNode.FullPath 字符串,以確定 TreeNode 標(biāo)簽的起始和終止位置。

成都創(chuàng)新互聯(lián)主營興國網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,興國h5小程序設(shè)計(jì)搭建,興國網(wǎng)站營銷推廣歡迎興國等地區(qū)企業(yè)咨詢

可以在樹節(jié)點(diǎn)旁顯示圖像,方法是將一個(gè) ImageList 分配給 ImageList 屬性,然后通過引用 Image 在 ImageList 中的索引值來分配該 Image。使用下面的屬性分配圖像:

將 ImageIndex 屬性設(shè)置為當(dāng)樹節(jié)點(diǎn)未選定時(shí)所顯示的 Image 的索引值。

將 SelectedImageIndex 屬性設(shè)置為當(dāng)樹節(jié)點(diǎn)被選定時(shí)要顯示的 Image 的索引值。

ImageIndex 和 SelectedImageIndex 屬性值所引用的圖像是所有分配給 Nodes 集合的樹節(jié)點(diǎn)顯示的默認(rèn)圖像。每個(gè)樹節(jié)點(diǎn)都可以通過設(shè)置 TreeNode.ImageIndex 和 TreeNode.SelectedImageIndex 屬性來取代默認(rèn)的圖像。

樹節(jié)點(diǎn)可以展開,以顯示下一級子樹節(jié)點(diǎn)。用戶可以在 TreeNode 旁顯示加號 (+) 按鈕時(shí)通過單擊加號 (+) 按鈕來展開 TreeNode,或者可以通過調(diào)用 TreeNode.Expand 方法來展開 TreeNode。若要展開 Nodes 集合中的所有子樹節(jié)點(diǎn)級別,請調(diào)用 ExpandAll 方法。若要折疊子 TreeNode 級別,可以調(diào)用 TreeNode.Collapse 方法,也可以在 TreeNode 旁顯示減號 (-) 按鈕時(shí)按減號 (-) 按鈕。還可以通過調(diào)用 TreeNode.Toggle 方法在展開和折疊狀態(tài)之間切換。

樹節(jié)點(diǎn)可以選擇性地顯示復(fù)選框。若要顯示復(fù)選框,請將 TreeView 的 CheckBoxes 屬性設(shè)置為 true。對于處于選中狀態(tài)的樹節(jié)點(diǎn),Checked 屬性設(shè)置為 true。

注意

從 BeforeCheck 或 AfterCheck 事件內(nèi)設(shè)置 TreeNode.Checked 屬性將導(dǎo)致該事件被多次引發(fā)并可能產(chǎn)生意外行為。例如,您可以在遞歸更新子節(jié)點(diǎn)時(shí)在事件處理程序中設(shè)置 Checked 屬性,以便用戶不必逐個(gè)展開并選中每個(gè)節(jié)點(diǎn)。如果未將 TreeViewEventArgs 的 Action 屬性設(shè)置為 TreeViewAction.Unknown,則若要防止該事件被多次引發(fā),需為僅執(zhí)行遞歸代碼的事件處理程序添加邏輯。有關(guān)如何進(jìn)行此操作的示例,請參見 AfterCheck 或 BeforeCheck 事件的示例部分。

通過設(shè)置 TreeView 控件的一些顯示和樣式屬性,可以更改此控件的外觀。如果將 ShowPlusMinus 設(shè)置為 true,則會分別在每個(gè)可展開或折疊的 TreeNode 旁顯示加號或減號按鈕。如果將 ShowRootLines 屬性設(shè)置為 true,TreeView 則會顯示聯(lián)接所有根樹節(jié)點(diǎn)之間的連線。通過將 ShowLines 屬性設(shè)置為 true,可以顯示子樹節(jié)點(diǎn)與其根節(jié)點(diǎn)之間的連線。如果將 HotTracking 屬性設(shè)置為 true,那么當(dāng)鼠標(biāo)指針移過樹節(jié)點(diǎn)標(biāo)簽時(shí),樹節(jié)點(diǎn)標(biāo)簽的外觀將發(fā)生變化。如果啟用熱跟蹤,樹節(jié)點(diǎn)標(biāo)簽將具有超鏈接的外觀。也可以完全自定義 TreeView 控件的外觀。若要執(zhí)行此操作,請將 DrawMode 屬性設(shè)置為 TreeViewDrawMode.Normal 以外的值并處理 DrawNode 事件。

注意

在運(yùn)行時(shí)設(shè)置 CheckBoxes、Scrollable、ImageIndex 和 SelectedImageIndex 屬性時(shí),將重新創(chuàng)建 TreeView 句柄(請參見 Control.RecreateHandle)以更新控件的外觀。這將折疊除選定的 TreeNode 之外的所有樹節(jié)點(diǎn)。

下面的代碼示例闡釋了如何使用 TreeView 控件。

Private Sub InitializeTreeView()

treeView1.BeginUpdate()

treeView1.Nodes.Add("Parent")

treeView1.Nodes(0).Nodes.Add("Child 1")

treeView1.Nodes(0).Nodes.Add("Child 2")

treeView1.Nodes(0).Nodes(1).Nodes.Add("Grandchild")

treeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Great Grandchild")

treeView1.EndUpdate()

End Sub

From MSDN

C#與VB.net有什么不同呀?

都說在.NET里,.NET framework和CLR是應(yīng)用運(yùn)行的基礎(chǔ)。那么VB.NET和C#是不是就完全一樣,只是語法不同嗎?

一、C#

--- 像VB一樣簡單,像C++一樣強(qiáng)大的新語

C#是第一流的面向組件的語言

由 Turbo Pascal, Delphi, and Visual J++的首席設(shè)計(jì)師Anders Hejlsberg 傾心3年設(shè)計(jì)

所有的語言元素都是真正的對象

開發(fā)強(qiáng)壯和可重用的軟件

所有的.NET Framework中的基類庫(Base Class Library)都由C# 編寫

二、VB.NET

--- 完全面向?qū)ο蟮腂ASIC語言

1.新語言特性

完全面向?qū)ο蟥C 繼承(Inheritance), 重載(overloading), 共享的成員, 結(jié)構(gòu)化異常處理

強(qiáng)壯的語言 – 嚴(yán)格的類型檢查, 變量聲明時(shí)初始化,支持垃圾收集(Garbage collection)

強(qiáng)大 – 支持委托(Delegates), free threading,Variant 數(shù)據(jù)類型被 Object 代替

2.與VB6一致的語法

三、2者的區(qū)別?

1.語法上的差異

例如循環(huán)的寫法

VB.NET

For I = 1 To 10

‘ for loop

Next I

C#

For (i=1;i11;i++) {

// for loop

}

另外Visual Basic 對大小寫不敏感,而C#是大小寫敏感的。

2.C# 具有但 Visual Basic 不具有的特性

指針, 移位操作符, 內(nèi)嵌的文檔(XML)

重載操作符

3.Visual Basic具有但 C# 不具有的特性

更豐富的語法: Events, Try…Catch, Select…Case, 實(shí)現(xiàn) Interface

后期綁定(Late binding), 動態(tài)數(shù)組, 模塊(modules), 可選參數(shù), 參數(shù)屬性(parameterized properties)

后臺編譯

C#與VB.net間移植的技巧

按理說,這兩種語言沒有什么移植的必要,因?yàn)樗麄兩傻拇a可以完全通用。但是如果一個(gè)工程基本上是VB寫成的,卻需要少許已經(jīng)存在的C#過程,用組件并不是一種效率很高的辦法。就算是學(xué)習(xí)C#或VB,學(xué)會他們之間的移植可以雙倍的利用已經(jīng)存在的代碼(如好玩的Donkey.net就只有VB版)。

有人比較過這兩種語言,得出的結(jié)論是他們很相似。但即便是這樣,VB初學(xué)者看到諸如((Button)sender).Text=“啟動”;之類的語法不知道如何移植到VB,而C#初學(xué)者看到Handles Button1.Click等語法也會為移植而感到頭痛。下面就看看他們最難移植的部分:

1、Option語句。VB的Option語句可以打開或關(guān)閉變量聲明檢查和類型轉(zhuǎn)換檢查。尤其是Option Strict被關(guān)閉后,VB變成弱類型語言,很多類型轉(zhuǎn)換都是自動的,移植到C#中會產(chǎn)生無數(shù)錯(cuò)誤。因此,如果要將帶有Option Strict Off語句的VB程序移植到C#,最好先在VB中將Option Strict打開,然后把所有類型轉(zhuǎn)換出錯(cuò)的地方變成強(qiáng)類型轉(zhuǎn)換,然后再進(jìn)行移植。

2、類型轉(zhuǎn)換。VB提供了很多類型轉(zhuǎn)換函數(shù)型運(yùn)算符,如CInt(),CSng(),CStr()等,在C#中只要用(int),(float),(String)即可。然而如果不是標(biāo)準(zhǔn)類型,如下面的C#語句:

((System.Button)sender).Text=“啟動”;

就要使用VB的函數(shù)型運(yùn)算符CType來實(shí)現(xiàn)。上面的代碼正確的移植方法是:

CType(sender,System.Button).Text=“啟動”

千萬不要使用某些人推薦的,將Option Strict關(guān)閉,然后用后期綁定調(diào)用sender對象的方法,這根本不符合程序移植不能改變本質(zhì)的要求。

3、修飾符和屬性標(biāo)簽。VB和C#的修飾符是完全對等存在的,但是拼寫往往不同,給移植帶來了很多麻煩,尤其是表示相同意思的關(guān)鍵字從字面理解完全不同的時(shí)候。下面就給出了VB和C#對應(yīng)的關(guān)鍵字:

VB

C#

VB

C#

Inherits

:

Implements

:

MustInherit

abstract

NotInheritable

sealed

Overridable

virtual

NotOverridable

sealed

MustOverride

abstract

Overrides

override

[Overloads]

Shadows

new

Shared

static

Public

public

Protected

protected

Friend

internal

Protected Friend

protected internal

Private

private

Static

用別的方法實(shí)現(xiàn)

ByVal

ByRef

ref

Optional

ParamArray

params

無法實(shí)現(xiàn)

unsafe

無法實(shí)現(xiàn)

fixed

可以看出,VB的關(guān)鍵字比較長,而且使用上也比C#更加嚴(yán)格。從C#向VB移植的時(shí)候,要分外注意哪些VB有而C#沒有的關(guān)鍵字以及在C#拼寫相同,在VB中拼寫不同的關(guān)鍵字(如MustOverride和MustInherit)。有些關(guān)鍵字如unsafe,如果C#使用了他們,將無法移植到VB中。好在這些關(guān)鍵字在商業(yè)應(yīng)用中并不常用。

屬性標(biāo)簽在這兩種語言中非常的相似,移植上應(yīng)該沒有任何難度,只要知道在C#中用方括號[]表示屬性標(biāo)簽,而在VB中用的是尖括號。另外,如果要用名稱結(jié)合傳遞參數(shù),C#直接使用=號,而VB使用:=(冒號和等號)。

4、委派類型。委派類型就是安全的函數(shù)指針類型。在C#中,難以分辨是函數(shù)指針在工作還是函數(shù)本身在工作,因?yàn)樗麄兊恼Z法相同。當(dāng)要為一個(gè)委派類型的變量復(fù)制的時(shí)候,直接等于一個(gè)函數(shù)即可,如:

public delegate void FuncType(Object e)

...

FuncType func;

func=new FuncType(this.SampleFunction1);

//調(diào)用

func(something);

//換指向另外一個(gè)函數(shù)

func=this.SampleFunction2

然而VB中,委派類型就像是一般的對象,有它的方法,與函數(shù)本身明顯不同。你不能將過程的名字直接賦給一個(gè)委派類型的對象,而必須使用AddressOf運(yùn)算符,下面的例子就是上文C#程序的VB版,注意那些實(shí)現(xiàn)不同的地方:

Public Delegate Sub FuncType(ByVal eAs Object)

...

Dim func As FuncType

func=New FuncType(AddressOf Me.SampleFunc1)

‘調(diào)用

func.Invoke(something)

‘換指向另外一個(gè)函數(shù)

func=AddressOf Me.SampleFunction2

5、事件處理。這是兩種語言最大的差別之一,VB傳承以前版本強(qiáng)大的事件處理機(jī)制,許多語法都比C#更加靈活。好在無論什么情況,他們之間都是可以互相移植的。

對于事件定義,兩種語言都是一個(gè)委派類型加一個(gè)事件屬性,如:

[C#]

public delegate void MyEventHandler(Object sender,EventArgs e);

public event MyEventHandler MyEvent;

[Visual Basic]

Public Delegate Sub MyEventHandler(ByVal sender As Object,ByVal eAs EventArgs)

Public Event MyEvent As MyEventHandler

VB還支持另外一種更加緊湊的定義方法,只有一條語句:

Public Event MyEvent(ByVal sender As Object,ByVal eAs EventArgs)

移植的時(shí)候,要把參數(shù)部分分離出來,成為一個(gè)委派類型,再按照普通方法定義事件即可。

關(guān)于事件響應(yīng),C#與Delphi等語言一樣,是動態(tài)綁定事件過程的,其語法類似于下:

internal MyClass myobj;

...

myobj=new MyClass();

...

myobj.MyEvent+=this.myobj_MyEvent;

...

protected void myobj_MyEvent(Object sender,EventArgs e)

{

//語句

}

可以看到,C#是利用運(yùn)算符連接事件過程和事件屬性的。之后,還可以用-=運(yùn)算符解除事件過程與事件屬性的綁定。VB不支持運(yùn)算符重載,但仍然支持這種動態(tài)綁定的事件過程,方法是使用AddHandler和RemoveHandler關(guān)鍵字。如上面黑體部分可以移植為:

AddHandler myobj.MyEvent,AddressOf Me.myobj_MyEvent

解除綁定的語法與此類似,只是關(guān)鍵字為RemoveHandler而已。一定不要忘記過程前面還有一個(gè)AddressOf關(guān)鍵字!

動態(tài)綁定的事件過程工作起來比較慢,VB支持一種更快的靜態(tài)綁定事件過程。一旦為對象設(shè)置了靜態(tài)的事件過程,就不能解除綁定,一般大多數(shù)情況都是如此。語法如下:

‘定義變量時(shí)使用WithEvents關(guān)鍵字

Friend WithEvents myobj As MyClass

‘直接書寫事件過程,注意Handles的語法:

Protected Sub myobj_MyEvent(ByVal sender As Object,ByVal eAs EventArgs)_

Handles myobj.MyEvent

‘語句

End Sub

它表示myobj_MyEvent這個(gè)過程僅僅響應(yīng)myobj.MyEvent這個(gè)過程。如果一個(gè)過程要響應(yīng)很多個(gè)事件,把他們列在Handles后面,用逗號隔開,如Handles Event1,Event2,...

遇到這種情況,要看清Handles后面的所有對象和事件,將它們一一改寫成動態(tài)綁定的語句:

Protected Sub XXX(...)Handles myobj1.MyEvent,myobj2.MyEvent

==

myobj1.MyEvent+=this.XXX;

myobj2.MyEvent+=this.XXX;

...

protected void XXX(...){}

當(dāng)事件比較多時(shí),C#顯著變得比較麻煩,幸好一個(gè)過程響應(yīng)一大堆事件的情況也不太多(不過我就編寫過一個(gè)過程相應(yīng)8個(gè)事件,移植起來好麻煩!)。原則上說,將靜態(tài)事件過程移植為動態(tài)事件過程并沒有完全遵守移植的規(guī)定,但我估計(jì)他們實(shí)現(xiàn)的原理不會相差太多,所以也不用擔(dān)心。

6、異常處理。VB支持兩種形式的異常,即.net框架的異常和VB自己的錯(cuò)誤號碼。而C#只支持第一種。用到VB自己的錯(cuò)誤號碼的程序幾乎無法移植到C#中,所以應(yīng)該盡量使用.net框架的異常,如下面VB語句:

Try

‘發(fā)生錯(cuò)誤的代碼

Catch When Err.Number=52

‘解決錯(cuò)誤的代碼

End Try

這段代碼無法直接移植到C#中,只有用Exception對象取代Err對象獲得異常信息,才能順利移植。另外VB的When語句帶給Try語句十分靈活的用法,必須用很高的技巧才能在C#中實(shí)現(xiàn),這就需要具體問題具體分析了。

VB支持Exit Try語句,可以直接從Try塊或Catch塊跳轉(zhuǎn)到Finally塊。C#沒有提供類似的語法,可以用以下技巧:

[Visual Basic]

Try

‘一些語句

Exit Try

Finally

‘一些語句

End Try

[C#]

try

{

//一些語句

goto__leave;

}

finally

{

//一些語句

}

__leave://別忘了這里還有哦!

總之是利用了finally塊無法跳過的特征,用goto語句模擬了Exit Try語句。

如果VB程序用的是VB特有的On Error GoTo語句實(shí)現(xiàn)的錯(cuò)誤處理,問題就麻煩了。代碼可能在過程中上下跳躍,無法預(yù)料語句的執(zhí)行方式。這種代碼理解起來就頭痛,更不要說移植了。總體來說,把所有語句統(tǒng)統(tǒng)轉(zhuǎn)移到try塊中,然后用catch一一處理錯(cuò)誤。遇到要返回(Resume語句)的時(shí)候,只好Copy代碼了。反正不是一件容易的事情,慢慢改就是了。

7、模塊。VB支持模塊,C#不支持。但也沒有關(guān)系,只要在C#中制造一個(gè)abstract類,共享所有成員,就和模塊一樣了。當(dāng)然不能像VB一樣直接訪問模塊中的成員,需要用到“類名.成員名”的用法。

8、接口。C#在接口方面也沒有VB強(qiáng)大(怎么這么重要的功能也不做得好一點(diǎn)?),VB采用Implements語句結(jié)合接口的成員和類的實(shí)現(xiàn)成員,而C#是用名稱結(jié)合。因此VB就可以隨便修改實(shí)現(xiàn)成員的訪問級別和名稱,而C#就不能改名稱。將C#移植為VB時(shí),最好利用VB.net編輯器直接實(shí)現(xiàn)接口,比較簡單。把VB移植為C#時(shí),就必須把改過的名字都改回來,遇到名字沖突就更討厭了(這時(shí)候我?guī)缀醪幌朐僖浦矠镃#了)。給一個(gè)例子:

[Visual Basic]

Public Class Class1:Implements IMyInterface

Public Sub DoSth()Implements IMyInterface.Method1

End Sub

End Class

[C#]

public class Class1:IMyInterface

{

public void Method1()

{

}

}

9、運(yùn)算符重載。這會遇到VB頭痛了,既然VB不支持運(yùn)算符重載,那么就必須用子程序和函數(shù)來模擬運(yùn)算符。比如建立Plus和Minus方法模擬+和-的運(yùn)算。當(dāng)然還是有很多情況(比如遇上了explicit和implicit語句)就真的沒有辦法了,只好不移植了。運(yùn)算符重載是一個(gè)很不錯(cuò)的功能,它能使很多操作簡單地完成,如果VB支持它,就真的是完美語言了。

vb6和vb.net如何選擇?

vb6多線程沒有vb.net方便

vb6可以在win10上運(yùn)行,開發(fā)的程序也可以不用擔(dān)心無法運(yùn)行的問題 都向下兼容的

理論和現(xiàn)實(shí)上 都不會讓vb6開發(fā)的程序無法運(yùn)行

夠用,只不過是因?yàn)樘幚砦募蠜]有多線程 速度上可能會慢點(diǎn)而已

這個(gè)因人而異,每個(gè)人的理解能力不同,編程邏輯思想比較重要,語法不同比較容易解決

完整的VB.NET的語法解析程序

  比較長 不過支持全部的關(guān)鍵字 直接就可以用了 using System;using System Text;using System Text RegularExpressions;

namespace Com OSLeague Component{/// summary/// 語法分析器 將所有Code根據(jù)語法進(jìn)行變色/// list type= VB 支持VB NET/list/// list type= CS 支持CS/list/// author掉掉/author/// date 年 月 日/date/// Memo/// 練習(xí)正則表達(dá)式/// /Memo/// /summarypublic class CodeAnalysis{

////定義HTML開始和結(jié)束的語句 用于語法變色//

const string TAG_FNTRED = @ font color= red ;const string TAG_FNTBLUE = @ font color= blue ;const string TAG_FNTGRN = @ font color= green ;const string TAG_FNTMRN = @ font color= maroon ;const string TAG_FNTBLACK = @ font color= black ;const string TAG_EFONT = @ /font ;const string TAG_SPNYELLOW = @ span style= background color: yellow; ;const string TAG_ESPAN = @ /span ;const string TAG_B = @ b ;const string TAG_EB = @ /b ;const string TAG_MENT = @ font colr=# ;const string TAG_EMENT = @ /font ;

//

public CodeAnalysis(){//// TODO: 在此處添加構(gòu)造函數(shù)邏輯//}

/// summary/// 處理VB NET代碼 彩色化 /// /summary/// param name= Code 傳入的Code/param/// returns處理過后的代碼/returnspublic string ParseVB(string Code){////定義VB NET中關(guān)鍵字 將其存為數(shù)組//

string[] VB_Keyword = new string[]{ AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType Date Decimal Declare Default Delegate Dim DirectCast Do Double Each Else ElseIf End Enum Erase Error Event Exit False Finally For Friend Function Get GetType GoTo Handles If Implements Imports In Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing NotInheritable NotOverridable Object On Option Optional Or OrElse Overloads Overridable Overrides ParamArray Preserve Private Property Protected Public RaiseEvent ReadOnly ReDim RemoveHandler Resume Return Select Set Shadows Shared Short Single Static Step Stop String Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until Variant When While With WithEvents WriteOnly Xor };

////設(shè)定轉(zhuǎn)換代碼顏色//

lishixinzhi/Article/program/net/201311/14615

與VB .NET一起使用.NET Framework

使用 NET Framework Microsoft Visual Basic開發(fā)人員可以創(chuàng)建健壯的 在先前的Visual Basic版本中很難編寫的應(yīng)用程序 本文將討論使用 NET Framework的好處 并且將包括一些功能強(qiáng)大的 Visual Basic開發(fā)人員可以與該框架一起使用的特性 包括多線程和線程池(thread pooling) Windows服務(wù)和文件系統(tǒng)監(jiān)控等 為什么使用框架 單詞框架(framework)有幾種含意 在這種情況中 它指的是創(chuàng)建和運(yùn)行應(yīng)用程序的基礎(chǔ) 擁有這樣的基礎(chǔ)使得創(chuàng)建應(yīng)用程序變得更容易 而同時(shí)使用了一個(gè)一致的 簡化的程序設(shè)計(jì)模型 作為一個(gè)Visual Basic 開發(fā)人員 你對于這種程序設(shè)計(jì)語言感覺很滿意 它使得創(chuàng)建各種應(yīng)用程序變得很容易 Visual Basic語言本身提供了固有的數(shù)據(jù)類型 如 Integer Long和String 以及一些最常用的函數(shù) 如字符串處理和數(shù)據(jù)類型轉(zhuǎn)換等 當(dāng)你的應(yīng)用程序變得更復(fù)雜時(shí) 你可以使用Win API來完成標(biāo)準(zhǔn)的Visual Basic函數(shù)所不能實(shí)現(xiàn)的功能 如獲取任意的注冊鍵和數(shù)值 在許多情況中 你還可以使用(Component Object Model 組件對象模型)組件庫來擴(kuò)展應(yīng)用程序的功能 最明顯的例子是ADO(ActiveX Data Objects)庫 你的應(yīng)用程序可以使用它來進(jìn)行數(shù)據(jù)訪問 雖然Visual Basic足夠靈活 可以提供這些不同的可擴(kuò)展性機(jī)制 但這種靈活性仍然需要你學(xué)習(xí)幾種復(fù)雜的API體系結(jié)構(gòu) 你需要了解Win 如何工作 以及如何在Visual Basic中調(diào)用它們 這可能會是一個(gè)既費(fèi)時(shí)又容易出錯(cuò)的任務(wù) 你還需要了解如何在Visual Basic中使用各種組件 每個(gè)組件都有一個(gè)不同的對象模型 最后 當(dāng)你使用Win API ADO 也可能使用許多其他組件 創(chuàng)建自己的Visual Basic應(yīng)用程序時(shí) 你需要管理這些應(yīng)用程序的部署以及它們的相關(guān)性 一個(gè)典型的Visual Basic應(yīng)用程序的相關(guān)性列表所包括的遠(yuǎn)遠(yuǎn)多于Visual Basic運(yùn)行時(shí)(runtime);它必須包括應(yīng)用程序使用的所有對象庫 如ADO 公共框架背后的想法是解決這些問題 并使得用戶創(chuàng)建健壯的應(yīng)用程序變得更容易 而無需學(xué)習(xí)多種不同的API體系結(jié)構(gòu) 并且無需部署和處理多種對象庫的版本問題 什么是 NET Framework 術(shù)語 NET Framework指的是構(gòu)成Microsoft NET平臺開發(fā)基礎(chǔ)的一組技術(shù) 這一組中的關(guān)鍵技術(shù)是運(yùn)行時(shí)(runtime)和類庫 運(yùn)行時(shí)負(fù)責(zé)管理代碼 在執(zhí)行時(shí)向它提供服務(wù) 這與Visual Basic 運(yùn)行時(shí)的作用類似 NET程序設(shè)計(jì)語言 包括Visual Basic NET Microsoft Visual C# C++管理的擴(kuò)展 以及多種來自不同開發(fā)商的程序設(shè)計(jì)語言 通過一組公共的統(tǒng)一類來利用各種服務(wù)和特性 NET統(tǒng)一類提供了創(chuàng)建應(yīng)用程序的基礎(chǔ) 而不管你使用何種語言 無論你只是簡單地連接一個(gè)字符串 還是創(chuàng)建一個(gè)Windows服務(wù)或多層的基于網(wǎng)絡(luò)的應(yīng)用程序 你都要用到這些統(tǒng)一類 統(tǒng)一類為訪問平臺的功能性提供了一種一致的方法 一旦你學(xué)會了使用類庫 你就會發(fā)現(xiàn)所有任務(wù)都遵循同一個(gè)一致的體系結(jié)構(gòu) 要編寫自己的應(yīng)用程序 你無需學(xué)習(xí)和掌握不同的API體系結(jié)構(gòu) 由于 NET Framework 部署Visual Basic NET應(yīng)用程序變得更容易了 與Visual Basic 應(yīng)用程序不同 你無需配置各種相關(guān)性 如單獨(dú)的數(shù)據(jù)訪問庫 XML語法分析器和網(wǎng)絡(luò)API 因?yàn)樗羞@些功能都是 NET Framework的組成部分 通過在統(tǒng)一的 集成的框架上創(chuàng)建自己的應(yīng)用程序 你可以實(shí)現(xiàn)學(xué)習(xí)這種框架所花費(fèi)時(shí)間的最大回報(bào) 并且你將擁有更多容易部署和使用的健壯的應(yīng)用程序 NET Framework與Visual Basic NET Visual Basic 運(yùn)行時(shí)在簡化許多公共的程序設(shè)計(jì)任務(wù)方面非常重要 但是簡化這一層意味著 在擁有Visual Basic可以使用的打包程序之前 你不能使用新的操作系統(tǒng)特性 如DirectX 作為一個(gè)Visual Basic開發(fā)人員 你從 NET Framework獲得的最重要的益處是 可以使用一致的程序設(shè)計(jì)模型既直接又容易地訪問 NET平臺 這意味著 你可以使用Visual Basic NET創(chuàng)建很難或不可能使用Visual Basic 創(chuàng)建的應(yīng)用程序 作為一個(gè)Visual Basic 開發(fā)人員 現(xiàn)在你將對能夠使用與其他平臺語言相同的特性和功能而贊賞不已 例如 為了創(chuàng)建Windows服務(wù) 你無須再用Microsoft Visual C++來編寫它 你也無須求助于黑客或組裝機(jī) 你可以優(yōu)雅 干凈 容易地使用Visual Basic NET完成這項(xiàng)工作 為了給你一些使用 NET Framwork的例子 我們將討論在你的應(yīng)用程序中可能需要執(zhí)行的 個(gè)常見任務(wù) 跟蹤與事件記錄 多線程 文件系統(tǒng)監(jiān)控和創(chuàng)建Windows服務(wù) 跟蹤與事件記錄 當(dāng)創(chuàng)建一個(gè)健壯的應(yīng)用程序的時(shí)候 你必須密切注意診斷和故障排除機(jī)制 代表性地 這包括編寫處理打開輸出目標(biāo)(事件記錄或文件)的跟蹤組件 編寫跟蹤消息和關(guān)閉輸出目標(biāo) 然后通過自己的代碼調(diào)用關(guān)于這個(gè)組件的方法 將文本傳遞給記錄 你將所有的時(shí)間和精力花在了創(chuàng)建跟蹤和記錄子系統(tǒng)上 這最終并不會對解決商務(wù)問題有所貢獻(xiàn) 但這是創(chuàng)建應(yīng)用程序所必需的 NET Framework包括類和其他數(shù)據(jù)類型 通過向你提供記錄基礎(chǔ)設(shè)施 使得記錄跟蹤消息變得很容易 圖 給出了用于跟蹤的 NET Framework類 類是System Diagnostics名稱空間的一部分 Trace類提供了幾個(gè)共享的方法 例如 Write方法允許你記錄特定消息 而Assert方法允許你在特定的條件為假的情況下記錄一條消息 Trace類將消息輸出到Listeners集合中的對象 這個(gè)集合中的每個(gè)對象都屬于繼承自TraceListener的一個(gè)類 EventLogTraceListener 將消息寫入事件記錄 而TextWriterTraceListener則是將消息寫入到一個(gè)文本文件中 默認(rèn)情況下 DefaultTraceListener的一個(gè)實(shí)例被添加到Trace類的Listeners集合中 除了標(biāo)準(zhǔn)的監(jiān)聽程序以外 你可以實(shí)施自己跟蹤監(jiān)聽程序 例如 你希望接收來自在防火墻后面的遠(yuǎn)程機(jī)器上運(yùn)行的應(yīng)用程序的跟蹤輸出 你可以編寫一個(gè)跟蹤監(jiān)聽程序 通過HTTP全球向你的服務(wù)器發(fā)送跟蹤消息 這將會影響你的應(yīng)用程序的性能 但只會在啟用跟蹤時(shí)才會對性能有所影響 代表性地 你需要有能力在編譯的二進(jìn)制文件中包括或去除跟蹤代碼 為了在Visual Basic 中做到這一點(diǎn) 你需要使用編譯常量 并在#If語句中包含所有的跟蹤代碼 這使得代碼很難理解和維護(hù) 利用 NET Framework 你只需在項(xiàng)目屬性(Project Properties)對話框中將TRACE編譯常量設(shè)為on或off狀態(tài) 你無需在#If語句中包括跟蹤代碼 另一個(gè)普遍期望的跟蹤特性是跟蹤水平設(shè)置 這包括不同的跟蹤設(shè)置 例如 Severe(嚴(yán)重) Error(錯(cuò)誤) Warning(警告)和Information(信息) 這些設(shè)置對記錄哪些信息進(jìn)行控制 你可以使用跟蹤組件啟動時(shí)所讀取的注冊表數(shù)值對此進(jìn)行控制 對于 NET Framework 這是完全內(nèi)置的功能 你可以設(shè)置一個(gè)注冊表數(shù)值來控制你當(dāng)前的應(yīng)用程序的記錄水平 比如 只有在跟蹤水平被設(shè)置為Severe(嚴(yán)重)的情況下 才使用Trace WriteIf和Trace WriteLineIf來記錄消息 集成的跟蹤和記錄特性極大地增強(qiáng)了生產(chǎn)力 因?yàn)槟阒恍枋褂脙?nèi)置的特性 將精力集中在編 *** 正的應(yīng)用程序代碼上

多線程應(yīng)用程序 NET Framework的一個(gè)很重要的特性是 可以在不使用第三方工具或不支持的Visual Basic技巧情況下 使用Visual Basic創(chuàng)建多線程應(yīng)用程序 NET Framework的多線程支持是由System Threading名稱空間中的類和接口提供的 因此所有的 NET語言都能夠以相同的方式創(chuàng)建和處理線程 System Threading Thread是一個(gè)核心類 提供了對創(chuàng)建和控制線程的支持 要創(chuàng)建一個(gè)線程 你可以創(chuàng)建一個(gè)新的System Threading Thread對象 將構(gòu)造函數(shù)傳遞給ThreadStart代理 這個(gè)代理提供了這個(gè)線程開始執(zhí)行的方法 當(dāng)你準(zhǔn)備啟動這個(gè)新的線程時(shí) 可以調(diào)用Thread Start() (請參閱清單 ) 當(dāng)你開始創(chuàng)建多線程應(yīng)用程序時(shí) 你很快就會認(rèn)識到需要控制對共享資源的訪問 如共享的類變量 NET Framework還包括幾個(gè)類和數(shù)據(jù)類型 你可以使用它們對兩個(gè)線程執(zhí)行的動作進(jìn)行同步 在最簡單的情況中 你由一個(gè)需要從不同的線程中進(jìn)行更新的共享變量 要這樣做 你可以使用System Threading Interlocked類 例如 你可以通過編寫Interlocked Increment(num)或Interlocked Decrement(num)分別使名為num的共享變量遞增或遞減 你還可以使用Interlocked將變量設(shè)為某一特定值 或檢查兩個(gè)變量是否相等 除了這種簡單情況以外 你可以使用 NET Framework類來執(zhí)行更復(fù)雜的線程同步 如事件和互斥體的同步 所有都來自于 NET Framework內(nèi)部 而無須使用Win API Imports System IO注釋 The namespace System Threading注釋 contains the Thread classImports System ThreadingModule Module Private count As LongSub Main()注釋 Create the ThreadStart delegateDim tStart As ThreadStart = New _ ThreadStart(AddressOf StartCounting)注釋 Create the threadDim t As Thread = New Thread(tStart)Console WriteLine( Enter q to quit )t Start() 注釋 start the threadWhile (Console Read() asc( q ))注釋 repeat the loop until the user enters qEnd Whilet Stop() 注釋 tell thread to stop processingt Join() 注釋 wait until the thread finishesEnd SubSub StartCounting()Do注釋 use Interlocked Increment in case 注釋 another thread is accessing the same variableInterlocked Increment(count)Console WriteLine( _ After incrementing count is : count)Thread Sleep( )LoopEnd SubEnd Module 清單 使用Visual Basic NET創(chuàng)建線程 你創(chuàng)建了一個(gè)新線程 將它傳遞給一個(gè)ThreadStart代理 然后調(diào)用Thread Start()啟動這個(gè)線程 你可以通過調(diào)用Thread Stop()來中止這個(gè)線程 然后調(diào)用Thread Join()等待它完成關(guān)閉操作 一個(gè)線程可以使用System Threading Interlocked來使變量遞增或遞減 此外 NET Framework提供了一個(gè)方便的機(jī)制來對工作排隊(duì) 并將起分配給線程池中的某個(gè)線程 在處理多個(gè)并發(fā)工作項(xiàng)目或工作請求的服務(wù)器應(yīng)用程序中 這非常有用 例如 對于等待輸入文件 然后將它們導(dǎo)入到數(shù)據(jù)庫中去的應(yīng)用程序 可能會對每個(gè)輸入文件進(jìn)行排隊(duì) 以在線程池中的某個(gè)單獨(dú)的線程上進(jìn)行處理 System Threading ThreadPool類允許你使用共享的QueueUserWorkItem方法對工作進(jìn)行排隊(duì) 以前要這樣做 你必須得創(chuàng)建和管理自己的線程池 你又需要在基礎(chǔ)設(shè)施工作而不是在解決商務(wù)問題上花大量的時(shí)間和精力 文件系統(tǒng)監(jiān)控 我曾經(jīng)遇到過一些應(yīng)用程序 需要等待和處理某個(gè)特定目錄中的文件 例如 將數(shù)據(jù)從文件導(dǎo)入到數(shù)據(jù)庫中去的應(yīng)用程序 數(shù)據(jù)文件可以從某個(gè)大型機(jī)上下載 或者被轉(zhuǎn)移到某個(gè)輸入目錄中 該應(yīng)用程序?qū)⑺鼈儗?dǎo)入到數(shù)據(jù)庫中 你不用經(jīng)常地輪詢該目錄檢查是否有新文件 可以等待生成新文件的通知 你可以在Visual Basic 中使用Win API來做到這一點(diǎn) 而在Visual Basic NET中你可以使用 NET Framework類來做這項(xiàng)工作 但是在 NET中實(shí)施文件監(jiān)控與在 NET中完成其他工作的方法更加一致 因此學(xué)習(xí)曲線是最小的 你可以使用System IO FileSystemWatcher NET類對文件系統(tǒng)進(jìn)行監(jiān)視 它提供了一些屬性 允許你設(shè)置監(jiān)控的路徑 指定是對文件還是子目錄層次的變化感興趣 System IO FileSystemWatcher還允許你指定需要監(jiān)控的文件名和文件類型(例如 * xml是指監(jiān)控所有XML文件的變化) 最后 你可以指定感興趣的變化類型 例如 只對新建文件 文件屬性的變化或文件大小的變化(請參閱清單 )感興趣 在你設(shè)置了監(jiān)控內(nèi)容后 你需要鉤住用于感興趣的各種事件的事件處理程序 FileSystemWatcher事件有Changed Created Deleted Error和Renamed 要處理某個(gè)事件 首先你需要編寫一個(gè)與FileSystemEventHandler代理相同聲明的事件處理程序 然后將這個(gè)處理程序添加到FileSystemWatcher類中 這個(gè)基于代理的體系結(jié)構(gòu)允許你為同一個(gè)事件添加多個(gè)處理程序 或者對于多個(gè)事件使用同一個(gè)處理程序 而你不能使用Visual Basic 做到這一點(diǎn) 注釋 System IO contains the 注釋 file monitoring classes and typesImports System IOModule Module Sub Main() 注釋 FileSystemWatcher does the real work Dim fw As New FileSystemWatcher() 注釋 WaitForChangedResult is what you  注釋 get back when a change occurs Dim result As WaitForChangedResult 注釋 set the path to monitor fw Path = C:WINNT  注釋 tell it whether to watch files or directories fw Target = WatcherTarget File 注釋 tell it whether to include subdirs fw IncludeSubdirectories = False 注釋 hook up handlers AddHandler fw Created New FileSystemEventHandler(AddressOf OnFileNotify) 注釋 enable the watcher fw Enabled = True DoConsole WriteLine( Beginning to monitor ) 注釋 this is where we actually wait注釋 waiting blocks execution for the specified timeoutresult = fw WaitForChanged(WatcherChangeTypes All )Console WriteLine( Hit Enter to continue q to quit ) Loop While (Console ReadLine q )End Sub注釋 This is the delegate that gets 注釋 called when a file is created Public Sub OnFileNotify(ByVal source As Object ByVal e As FileSystemEventArgs)Console WriteLine( Notification received for file change type is _e FullPath e ChangeType) End SubEnd Module 清單 使用FileSystemWatcher監(jiān)控某個(gè)文件夾是否有新文件

lishixinzhi/Article/program/net/201311/11618

解釋一下 .net 、VS、VC 和vb.net的開發(fā)環(huán)境...謝謝!

1. .net是微軟的語言架構(gòu),是面向?qū)ο蟮耐泄苷Z言;VS是Visual Studio的縮寫,是微軟的集成開發(fā)環(huán)境,通過它可以設(shè)計(jì),開發(fā)和調(diào)試微軟平臺的程序,其中包括.net,也包括不是.net的程序;VC是Visual C的縮寫,是微軟版本的C語言,用來開發(fā)桌面應(yīng)用,不能做網(wǎng)站;VB.NET是.net中的一種語言,和原來的VB完全不同,可以用來開發(fā)桌面和網(wǎng)站,VB.net的開發(fā)環(huán)境是VS.net(目前最高版本是vs2008)。

2. 做網(wǎng)站的話,需要安裝VS(建議VS2008,因?yàn)楦訌?qiáng)大),如果用SQL Server的話需要安裝SQL Server(建議SQL2008,因?yàn)樾阅芨茫?/p>

3. VS2005和VS2008大小差不多,完全安裝4G左右,最小安裝1G左右

4. 如果使用數(shù)據(jù)庫建議用2008因?yàn)?000馬上就要停止技術(shù)支持了。

分享題目:vb.net語法分析器 語法分析器代碼實(shí)現(xiàn)
本文URL:http://chinadenli.net/article14/doojode.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管虛擬主機(jī)App設(shè)計(jì)建站公司域名注冊網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)