Visual Basic 及 C# 的小文章集合

清除表單右上方之關閉按鈕 (X) 的功能
VB 的表單 (Form) 上, 設有最大化及最小化按鈕的屬性設定, 但沒有提供設定關閉按鈕的屬性, 為了達到此目的, 唯有使用 API, 這方法是小弟現時知道的最佳方法

Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long

Private Sub Form_Load()
Dim n_SysMenu As Long
n_SysMenu = GetSystemMenu(Me.hwnd, 0)
RemoveMenu n_SysMenu, 6, 1024
RemoveMenu n_SysMenu, 5, 1024
End Sub

避免在讀取資料庫時, 讀到 Null 值而產生的錯誤
一搬使用方法是用 IsNull() 函數測試
可用另一簡潔一點的方法
MyData = DataTable.Recordset.Fields("MyField") & ""
關鏈是...加上... & "" .... 便可


簡代取 RecordSet 的資料內容
一般取得某資料內容的格式為
DataTable.Recordset.Fields("MyField")
簡便一點的方法是省去 .Fields
其實, 是可以再簡單一點 ....
DataTable.Recordset!MyField
注意...雙引號也無須使用!

取得執行檔之參數
有一些程式, 例如 "Print.EXE MyDoc", 當執行 Print.EXE 時, 給予參數 MyDoc, 程式便會取用該參數, Visual Basic 都可以, 而且很簡單, 該參數是儲存在一個名叫 "Command" 的變數內

取得硬盤(HardDisk)的唯一硬體序號
Trim(GetObject("winmgmts:").InstancesOf("Win32_PhysicalMedia")("Win32_PhysicalMedia.Tag=""\\.\PHYSICALDRIVE0""").SerialNumber)

用 VB.Net 繁體 / 簡體 轉換
繁體中文字轉換成簡體中文
strData = StrConv(strData, VbStrConv.SimplifiedChinese, 2052)
簡體中文 (GB2312) 系統的 LocaleID (LCID) 為 2052

簡體中文字轉換成繁體中文
strData = StrConv(strData, VbStrConv.TraditionalChinese, 1028)
繁體中文 (Big5) 系統的 LocaleID (LCID) 為 1028

解決 WebClient 亂碼
在 VB.Net WebClient 取回的網頁內文亂碼
可加上 .Encoding = System.Text.Encoding.UTF8

例如:
Dim vWebBrower As New System.Net.WebClient
vWebBrower.Encoding = System.Text.Encoding.UTF8


在 VB 上實現像 PHP 的 $$ 使用方式引用變數內容
在 VB 上, 實現像 PHP 的 $$ 引用變數

即是取得變數字串內容值的 跟字串同名 的 變數內容

上句很亂? .. 不! .. 可看下列程式碼示範便清楚, 及明白使用方式

Dim a As String = "AA"
Dim b As String = "BB"
Dim c As String = $"{a}"

Debug.Print(a) ' 當然會印出 AA
Debug.Print(b) ' 當然會印出 BB
Debug.Print(c) ' 此時會印出 AA (變數 a 的內容)

c = $"{b}"
Debug.Print(c) ' 此時會印出 BB (變數 b 的內容)

只要改變 c 的內容, 便可在同一句 Debug.Print(c) 中, 印出 變數 a 或 變數 b 的內容

另外 ${} ... 亦可以這樣用 ↓↓

Debug.Print($"這是變數 a 的內容 {a}, 這是變數 b 的內容 {c}, 這是變數 c 的 ""引用"" 內容 {c} ... 再列出 '雙符號' 一次 {{a}} {{c}}")

這是變數 a 的內容 AA, 這是變數 b 的內容 {a}, 這是變數 c 的 "引用" 內容 {a} ... 再列出 '雙符號' 一次 {a} {c}

解決讀取影像檔案時, 原影像檔案會被鎖著的問題
當讀取一個影像檔案時, 原影像檔案會被鎖著, 直至釋放後才可以被解鎖 ... 就算是加上了 Clone, 亦解決不了問題
例如:
Dim Bm As Bitmap = Image.FromFile("MyFileName.JPG").Clone

PictureBox.Image = Image.FromFile("MyFileName.JPG").Clone

可以用以下方法解決 (把檔案用 FileStream 讀入)

Dim Fs As New System.IO.FileStream(CtxtFileName.Text, System.IO.FileMode.Open, System.IO.FileAccess.Read)
Dim Bm As Bitmap = System.Drawing.Image.FromStream(Fs)
Fs.Close()


發佈留言