◎代碼編定實現Interface時
C#中使用 :Interface,然后按shift+alt+F10回車,呵呵,全部接口需實現的方法屬性全部自動生成。當然這個是2005才有的。2003不知有沒有,反正我是沒有找着。況且2005也算是普遍了。
VB中使用 Implements,光標定位至相應的Interface的上面,直接回車,呵呵,比C#還少一步就自動生成接口需要實現的方法及屬性了。
◎關鍵字對應關系:
C# |
VB.NET |
using |
Imports |
this |
Me |
void |
Sub |
base |
MyBase |
abstract |
MustInherit |
sealed |
NotOverridable |
virtual |
MustOverride |
switch |
Select |
internal |
Friend |
static |
Shared |
<T> |
(Of T) |
都是基於XML語法,可以描述代碼中每一個類型和每一個成員的信息,我們知道書寫XML文檔注釋最大的好處就是可以獲得智能感知的支持,並結合特定的xlts生成漂亮的幫助文檔,C#中連續輸入///即會自動生成相對應的符合xml的注釋出來。這點VB好像不成,VB中連續輸和''',然后要手工寫出符出xml格式的注釋出來,一旦開始就不能斷開,也不能摻雜其他代碼元素,直到所有的XML標記被關閉。<summary>是VB推薦使用的標記,是該描述元素的摘要。 除了<summary>,常用的標記有<remark>,表示說明;<param>表示參數信息;< exception>表示異常,此外還有<include>和<permission>等等。當然也不一定非要使用這些推薦的標記的,但是這些標記使用時可以自動完成,而且能被IDE所利用,所以C#就可以在///之后自動生成。關於這一點。本人比較鍾意C#多點。
◎My命名空間
"My"是一個極為出色的設計,是一個工程相關的命名空間,其中的內容是由IDE幫助組織的。這個可能是VB優於C#一個地方吧,至少到目前為此我所知道的,C#是沒有這個命名空間。當然C#中的Properties是可以實現VB中的My.Resources和My.Settings,至於My.User、My.Forms和My.WebServices就真的沒有了,要實現他們的功能,需要完全手工編碼。
My命名空間在當前版本中主要包含六個主要部分,分別是:My.Application、My.Computer、My.Resources、My.User、My.Forms和My.Webservices。直接輸入My關鍵字就可找到他們,也可以導入My命名空間,其語法是: Imports 項目名稱.My
由於這是一項對於我來說是一項新的功能,查閱相關資料得到:
My.Application是與當前運行的應用程序有關的對象,許多功能和Application對象是一樣的,但是My.Application不僅僅能用於Windows Form的應用程序,許多功能在控制台應用程序照樣能夠使用。列表說明如下:
My. Application成員 |
功能描述 |
ApplicationContext |
應用程序的上下文,包括主線程和主窗體的信息 |
AssemblyInfo |
程序集信息,包括版本、版權、標題、產品名稱和可執行名稱等 |
ChangeCurrentCulture |
改變應用程序當前文化設置,如貨幣和時間的格式 |
ChangeCurrentUICulture |
改變應用程序當前的用戶界面文化設置,如顯示語言和用詞 |
CommandLineArgs |
一個只讀集合,返回當前應用程序的命令行參數。這些參數已經分隔開,無須像原來那樣手工分隔Command函數的值了 |
CurrentCulture |
返回當前的文化設置 |
CurrentDirectory |
返回應用程序使用的當前目錄 |
CurrentUICulture |
返回當前的用戶界面文化設置 |
Deployment |
返回按照ClickOnce方法部署的應用程序的Deployment對象 |
DoEvents |
執行儲存在Windows消息隊列中的所有Windows消息 |
Exit |
退出應用程序 |
GetEnvironmentVariable |
通過環境變量的名字獲取環境變量的值 |
IsNetworkDeployed |
返回一個值,指示當前應用程序是否采用了網絡部署方式 |
Log |
一個記錄應用程序事件日志和異常的日志工具 |
MainForm |
當前應用程序的主窗體 |
OpenForms |
當前應用程序中所有已經打開窗體的集合,與VB6的Forms集合功能相同 |
Run |
啟動Visual Basic的啟動/關閉應用程序模式 |
SplashScreen |
返回當前應用程序作為Splash Screen的窗口 |
My.Computer封裝了大量訪問系統和硬件信息的功能,操作起來比直接使用.NET Framework或Windows API都方便得多。包括很多對象,利用這些對象,以前要寫N多代碼的東東,現在可能一兩行代碼即可搞定。
My.Computer中的對象 |
功能描述 |
示例代碼 |
My.Computer.Audio |
提供了播放音頻的功能,它既可以從wav等文件播放,也可以從音頻數據流來播放,就是說你可以用它輕松播放儲存在資源文件中或者數據庫中的音頻。播放時還可以指定后台播放或等待結束等多種設置。結合My.Resources來使用,更顯得方便無窮。 |
![]() |
My.Computer.Clipboard |
提供了以強類型方式讀寫剪貼板的功能,比Windows.Forms里面的剪貼板更加好用。使用Clipboard對象可以直接從剪貼板讀寫音頻、圖像、 文本甚至我的電腦中的文件拖放信息。此外,由VB6升級的項目現在將直接使用My.Computer.Clipboard對象升級以前的 Clipboard對象,這將解決VB.NET不能升級原先剪貼板功能的缺陷。 |
![]() |
My.Computer.Clock |
獲取時間的工具,它可以直接獲取當地時間、中時區的時間和從當時子時開始的毫秒計數。 |
|
My.Computer.FileSystem |
充分改善文件操作的復雜程度。FileSystem對象提供了易於理解的操作方式。FileSystem對象中復制文件的方法不但只需要指定目標路徑,還 可以幫助你建立目標目錄中不存在的級別。它還特別提供了CopyDirectory的功能,可以復制整個目錄!這正是目前.NET Framework缺乏的功能。同時FileSystem還能提供搜索上級目、子目錄或根目錄的功能,非常體貼。 |
![]()
![]()
|
My.Computer.Info |
獲得本機物理內存或虛擬內存的總數,剩余量、操作系統名稱、當前用戶名、本機安裝的文化設置等等,都可以輕松使用Info對象,它讓你對應用程序所在的系統了如指掌。 |
|
My.Computer.Keyboard 和My.Computer.Mouse |
快速獲得用戶鍵盤的信息,如大寫鎖定、數字鍵盤鎖定等是否打開,以及鼠標有幾個按鍵,是否配備滾輪等。如果你希望你的應用程序能夠做到最體貼用戶,那這些信息是少不了了 |
![]() |
My.Computer.Network |
最常用的網絡任務,只需要一行代碼,就可以Ping一個地址,或者檢測網絡是否接通。 |
![]()
|
My.Computer.Port |
提供了用一行代碼打開本機串口的功能,還能立刻綁定一個事件監視串口的變化。現在串口編程出奇的簡單,再也不需要MSComm控件了。 |
|
My.Computer.Printers |
能夠遍歷本機所安裝的所有打印機,還能找出默認的打印機。通過向默認打印機畫圖一樣的操作,就能開始打印了。這樣的操作會讓你想起VB6時代便利而簡潔的 打印操作。下面的例子將在默認打印機上打印一個橢圓。從VB6升級項目時,原來的Printer對象將自動升級為 My.Computer.Printers中的相關操作,升級的用戶可以更加放心了。 |
![]()
|
My.Computer.Registry |
比Microsoft.Win32空間中的那個版本簡單多了,他提供強類型的路徑支持,還能非常方便地讀寫注冊表。 |
![]() |
My.Computer.Screen |
獲取屏幕的可視范圍,像素的位數等。比VB6的Screen對象更強的是,它現在支持兩個顯示器。 |
My.Resources不是一個類庫,而是My命名空間中唯一一個子命名空間。是對項目資源的強類型封裝,從而使的資源的使用變得非常簡單。
My.User是My命名空間中最小的成員,和Thread.CurrentPrincipal屬性有關。簡單地將用戶名和角色信息提供,如果要獲得當前登錄的用戶名,只需要輸入My.User.Identity就行了。
My.Forms感覺就是給VB6.0的用戶找回一個以前的窗體編程模式, 因為My.Forms雖然在My命名空間中,但是使用它並不需要輸入My.Forms。而且My.Forms為項目中每一個窗體維護了一個默認實例,其實現方法很像Singleton模式——每個窗體都有一個默認實例,而且有一個全局訪問點,就通過窗體的類名即可訪問到。假設有兩個窗體——Form1和Form2,Form1是啟動窗體,現在你要用代碼顯示Form2,只需Form2.Show即可。要在Form2中修改Form1中一個TextBox的文字,只需要這樣:Form1.textBox1.Text = "Hello"即可。My.Forms的功能是解決窗體互訪的最佳模式,同時也不會浪費內存,因為它只有在第一次訪問所需窗體的時候才建立它。
My.WebServices原理同My.Forms一樣。WebService對於項目全局應該有一個一致的訪問點,所以VB2005將代替你創建代理類的實例,並維護於My.WebServices中,你可以隨時訪問他。
擴展My命名空間的功能
直接把類或模塊放入My命名空間是個方便的方法,做法非常簡單,只要將類或模塊定義在My命名空間中即可,例如:

然后就可以直接用My.Tools來訪問自定義的模塊,這種是將函數做成靜態的,但所有的方法都做成靜態畢竟不是最佳方法,所以資料推薦的做法是:首先我們要定義自定義類,可以放在任何地方,而不必放到My命名空間中,這樣就可以避免類名直接顯示在My關鍵字后。然后,在My命名空間下,定義一個帶有HideModuleNameAttribute的模塊,名稱可以隨便起;最后在模塊中設定訪問自定義類實例的屬性。
利用Partial關鍵字可以擴展My.Application或My.Computer的功能的。其對應的Class分別為MyApplication和MyComputer。
在C#中使用My.Application要使用My.Application,必須要繼承System.Windows.Forms.WindowsFormsApplicationBase (該類位於Microsoft.VisualBasic.dll中)。繼承之后我們要做幾件事情,首先書寫構造函數初始化MyApplication類, 在Visual Basic中這些設置均為IDE生成,而C#則需要手工書寫。然后重寫OnCreateMainForm方法,這個方法設定了當前應用程序的主窗體。接下 來書寫My類,讓他提供對MyApplication類的全局訪問點。最后改寫Main,在其中執行My.Application.Run()代替原來的 Application.Run(),具體做法如下。

修改Main函數












最后,再將自己對於事件機制的一小段代碼貼在這里,算是自己的筆記吧,另開一個隨筆又有閑太過於勉強,看這篇反正是講VB VS C#的,想放在這里也未嘗不可:

