讀取INI文件..可以用外部方法.使用API

讀取INI文件..可以用外部方法.使用API
[vbnet]
[DllImport(“kernel32”)]
private static extern int GetPrivateProfileInt(
string lpApplicationName,
string lpKeyName,
int nDefault,
string lpFileName);
[DllImport(“kernel32”)]
private static extern bool GetPrivateProfileString(
string lpApplicationName,
string lpKeyName,
string lpDefault,
StringBuilder lpReturnedString ,
int nSize,
string lpFileName);
[DllImport(“kernel32”)]
private static extern bool WritePrivateProfileString(
string lpApplicationName,
string lpKeyName,
string lpString,
string lpFileName);

[DllImport(“kernel32”)]
private static extern bool GetPrivateProfileSection(
string lpAppName,
StringBuilder lpReturnedString,
int nSize,
string lpFileName );
[DllImport(“kernel32”)]
private static extern bool WritePrivateProfileSection(
string lpAppName,
string lpString,
string lpFileName);
[/vbnet]

APP.CONFIG

Read/Write App.Config File with .NET 2.0
http://www.codeproject.com/useritems/SystemConfiguration.asp

ConfigurationManager.OpenExeConfiguration 方法 (ConfigurationUserLevel)
http://msdn2.microsoft.com/zh-tw/library/ms134265(VS.80).aspx

Configuration 類別
http://msdn2.microsoft.com/zh-tw/library/system.configuration.configuration(VS.80).aspx

在VB.NET 2005中如何取得APP.CONFIG中的資料庫連接字串?
http://blog.blueshop.com.tw/sweetboy/archive/2006/10/12/42229.aspx

讀寫配置文件APP.CONFIG
http://hobe.cnblogs.com/archive/2005/10/04/248679.aspx

動態讀改APP.CONFIG
http://www.cnblogs.com/robber/archive/2007/03/19/679988.html

CSS @ .NET WinForm
http://leoto.blogspot.com/2006/10/css-winform.html

其它.NET技巧
http://www.1-100.org/AspNet/21456.htm

多執行序

HOW TO:進行對 Windows Form 控制項的安全執行緒呼叫
http://msdn2.microsoft.com/zh-tw/library/ms171728(VS.80).aspx#Mtps_DropDownFilterText

使用 Visual Basic .NET 的多執行緒程式開發
http://www.microsoft.com/taiwan/msdn/library/2002/Apr-2002/whitepaper/vbtchAsyncProcVB.htm

如何在 Visual Basic . NET 或 Visual Basic 2005 中建立執行緒
http://support.microsoft.com/kb/315577/zh-tw

HOW TO:實作使用背景作業的表單
http://msdn2.microsoft.com/zh-tw/library/waw3xexc(VS.80).aspx

—————————————————————————————————-

Visual Basic 中的多執行緒

Visual Basic 應用程式可以使用「多執行緒處理」(或「無限制執行緒」(Free Threading)) 同時執行多項工作,在這項處理中個別的工作會在個別的執行緒上執行。多執行緒能夠提升您應用程式的效能和回應性。

多執行緒應用程式
說明如何建立和使用執行緒。

執行緒狀態
說明如何判斷和變更執行緒的狀態。

多執行緒程序的參數和傳回值
說明如何傳遞和傳回多執行緒應用程式 (Multithreaded Application) 的參數。

在表單和控制項使用多執行緒
涵蓋使用多執行緒、表單和控制項 (Control) 時的特殊考量。

逐步解說:多執行緒處理
示範如何建立簡單的多執行緒應用程式。

使用 Visual Basic 的進階多執行緒
列出如何在多執行緒應用程式 (Multithreaded Application) 中管理執行緒的主題。

元件中的多執行緒
提供描述如何在元件設計使用多執行緒的主題連結。

逐步解說:使用 Visual Basic 撰寫簡單的多執行緒元件
示範如何建立多執行緒元件。

Form的事件

http://tw.myblog.yahoo.com/jw!C0TkfHeAHxRFVrzGT.tKcQxxfIA-/article?mid=3415&prev=4986&l=f&fid=12

Initialize:
這是Form最先被觸發的事件,可別以為 Load 是第一個哦,Initialize才是第一個,會放在這個程式裡的程式碼大多是屬於要『亂搞型』,並不是真的要亂搞,可別誤會了哦,就是要搶在Form戴入前做的一些動作。
因為這時,Form真正的內容都還沒有讀取到記憶體內,所以Initialize可算是一個先頭部隊,先去處理掉一些麻煩的事,或是先建立起一個陣地,等待主力部隊的到來。

Terminate:
同樣的,別以為Unload是最後一個觸發的事件哦。
這算是和Initialize相反的一個事件,也是Form最一個會觸發的事件,簡單的說,這個事件裡的程式碼就是做收尾的工作,俗稱『收爛攤子』。

Load:
Form戴入到記體時會觸發的一個事件,這時包今在Form裡的所有一切都會讀取完成,所以在Form裡的程式碼才可以使用哦,有什麼要先執行的動作,就都可以寫在這裡。主力部隊到後,就要開始定布陣、安置人員,準備開始作戰了。

Unload:
這個和Load是個相反的事件,Form從記憶體中釋放時會產生的一個事件。這就好比主力部隊要離開時所做的一些動作都可以放在這個事件裡。

Activate:
一個系統中通常會有好幾個Form同時在執行,就拿您的電腦來說,你可能會開好幾個程式在用,或者開好幾個IE在看,有時會切換來切換去交互看,當您切換到要看的那一瞬間,Activate事件就會觸發,這就好比一個軍團裡有很多部隊,而司令指到某個部隊一瞬間,那個部隊的頭頭就一驚!!。

Deactivate
這個事件和Activate又是相反的,就是您要切換到另一個程式的一瞬間會觸發的事件。那個本來一驚的頭頭鬆了一口氣。

GotFocus:
這個事件是緊接著在Activate之後被觸發的,也最最常用的一個事件,大家常看到的變換滑鼠指標外型的程式碼有些是寫在這個事件裡。不過也可以寫在其他事件裡,這裡先不討論,因為有太多了。

LostFocus:
這個事件是GotFocus相反的事件,這個事件是在Deactivate事件之前發生的,滑鼠的指標外型要是有在GotFocus變動過,那在這裡就要還原到預設的,不然移到另一個程式時會怪怪怪的,當然也不一定要改回預設的,看程式的需求而定。

DragDrop:
這個事件是拖拉時會觸發的事件,當你把一個視窗拉到另一個位置時,這是最簡單的解釋。但是一個Form裡可以拖拉的東西非常多,只是大部分被設定成不能拖立。
把不要的檔案拉到垃圾桶時就會觸發這個事件,讓你可以把檔案拖動到垃圾桶,同時也可以寫入位置判斷的程式碼。

DragOver:
這個事件和DragDrop又是一個相反的事件,當拖拉動作完成放開時就會觸發這個事件,把檔案拉到垃圾桶放開時,檔案刪除的程式碼就可以寫在這個事件裡。

當一個Form正常狀態下執行 → 結束時就會依下列順序觸發以下的事件:(DragDrop、DragOver不列入)

Initialize → Load → Activate → GotFocus → LostFocus → Deactivate → Unload → Terminate

Delegate概念

委派是一種物件導向【函式指標】,讓您利用函式的參考來間接叫用 (Invoke) 函式。
你可以把他想像成一個電燈開關或遙控器,可以從遠端操控電器。
在呼叫程序與被呼叫程序之間需要媒介的情況下,委派相當有用。

例如,您可能要引發事件的物件能夠在不同的情況下呼叫不同的事件處理常式。
但可惜的是,引發事件的物件無法提前知道處理特定事件的是哪一個事件處理常式。

當您使用 AddHandler 陳述式時,藉由為您建立委派,Visual Basic .NET 讓您能夠動態建立事件處理常式與事件的關聯。
另一個用法則是程式之間Call back的用法。例如A物件有個函式Foo,B物件有個函式Bar,
當A物件呼叫B物件的Bar函數時,希望Bar執行完之後,回Call A物件的Foo函式。
簡單做法就是Bar函式裡面加上一段 A.Foo就可以了。但是如果B是一個服務元件,也就是很多的函式都會引用到他,
也就是 Bar無法預先知道將來回Call的是那一個函數,可能是A.Foo1, C.Foo2, D.Foo3,…,這時候delegate就很好用了。

以A為例,在呼叫B.Bar之前,先建立一個delegate,對應到A.Foo,相對的修改B.Bar的定義,加入一個delegate物件參數,
當A呼叫B.Bar時,將這個 delegate當作參數,傳送到B.Bar,Bar執行完,直接叫用這個delegate即可。
依此類推,每個呼叫B.Bar的物件不同,對應過來的delegate也不同,但對Bar來說,都是相同的做法。