使用者工具

網站工具


visual_basic_dot_net

Visual Basic.Net 研究

COM PORT

VB.net
转义符 字符名
“” : “
成员 常量 等效 说明
—————————————————————————
CrLf vbCrLf Chr(13) + Chr(10) 回车/换行组合符。 (ControlChars.CrLf)
Cr vbCr Chr(13) 回车符。
Lf vbLf Chr(10) 换行符。
NewLine vbNewLine Chr(13) + Chr(10) 新行符。

Imports System.IO.Ports
Public commPort As New IO.Ports.SerialPort 宣告給外部使用
Dim commPort As New IO.Ports.SerialPort 只宣告給內部使用

commPort.IsOpen
commPort.write
commPort.read 此功能會造成阻塞,須先讀取 BytesToRead 確認有資料再使用 Read讀取實際資料
commPort.ReadLine
comport.BytesToRead 讀取此參數不會造成阻塞

COM port 屬性宣告
commPort.PortName
commPort.BaudRate
commPort.DataBits
commPort.Parity
commPort.StopBits
commPort.Handshake
commPort.WriteBufferSize
commPort.ReadBufferSize

執行外部程式

Imports System.Diagnostics 
'方法 1:
Process.Start("C:\F4G\BIN\F4EDVPDE.EXE", "/LC /P")

Dim p As New Process
' 方法 2:
Dim pi1 As New Diagnostics.ProcessStartInfo( _
  "C:\F4G\BIN\F4EDVPDE.EXE", "/LC /P")
p.StartInfo = pi1
p.Start()

' 方法 3:
Dim pi2 As New Diagnostics.ProcessStartInfo( _
  "C:\F4G\BIN\F4EDVPDE.EXE")
pi2.Arguments = "/LC /P"
p.StartInfo = pi2
p.Start()

如果你想在VB字符串文字中包含双引号,那么只需用另一个双引号来转义它,例如

Process.Start(App.exe, "arg1 ""arg 2"" arg3")''

与任何其他字符串一样,您可以使用连接:

Process.Start(App.exe, "arg1 """ & arg2 & """ arg3")''

或致电String.Format:

Process.Start(App.exe, String.Format("arg1 ""{0}"" arg3", arg2))''

或使用字符串插值:

 Process.Start(App.exe, $"arg1 ""{arg2}"" arg3")'' 

聲音控制

Imports System
Imports System.Windows.Forms
Imports System.Runtime.InteropServices

Partial Public Class Form1
	Inherits Form
	Private Const APPCOMMAND_VOLUME_MUTE As Integer = &H80000
	Private Const APPCOMMAND_VOLUME_UP As Integer = &HA0000
	Private Const APPCOMMAND_VOLUME_DOWN As Integer = &H90000
	Private Const WM_APPCOMMAND As Integer = &H319

	<DllImport("user32.dll")> _
	Public Shared Function SendMessageW(ByVal hWnd As IntPtr, _
                           ByVal Msg As Integer, ByVal wParam As IntPtr, _
	       ByVal lParam As IntPtr) As IntPtr
    End Function

    Private Sub btnMute_Click(ByVal sender As Object, ByVal e As EventArgs)
	                 SendMessageW(Me.Handle, WM_APPCOMMAND, _
                         Me.Handle, New IntPtr(APPCOMMAND_VOLUME_MUTE))
    End Sub

    Private Sub btnDecVol_Click(ByVal sender As Object, ByVal e As EventArgs)
                      SendMessageW(Me.Handle, WM_APPCOMMAND, _
                          Me.Handle, New IntPtr(APPCOMMAND_VOLUME_DOWN))
    End Sub

    Private Sub btnIncVol_Click(ByVal sender As Object, ByVal e As EventArgs)
            SendMessageW(Me.Handle, WM_APPCOMMAND, _
                         Me.Handle, New IntPtr(APPCOMMAND_VOLUME_UP))
    End Sub
End Class

程式斷行與註解

1.斷行符號: _ (底線) 說明:

程式碼中,有時程式碼太長了,要接到下一行時,這時就要用斷行符號\\

範例:
原程式
Dim lognVarNeedToBreakLine As String = “This is a long default string”
斷成二行的程式,最後加個底線就可以了

Dim lognVarNeedToBreakLine As String = _

        "This is a long default string"

2.換行符號: vbCrLf 說明:

  如果字串中,要為了顯示的需求,要加入跳行符號,來讓符號後的字串內容,
  顯示到下一行時,就要加入換行符號

範例:

  字串連結的程式碼中,加入vbCrLf即可
  longVarNeedToBreakLine = "PartA" + vbCrLf + "PartB"

3.註解: ' (單引號) 說明:

  註解程式中的說明內容,來讓註解文字不要編譯時,就要使用註解符號\\

範例:

  要註解的程式前面,加個單引號就變成註解了\\

'備註:這行是註解內容

String 字串

Integer HEX 轉成字串

Dim val As String
val = "10"
Dim hexVal As Integer
hexVal = Convert.ToInt32(val, 16) //16 specifies the base
Console.WriteLine(hexVal)

Integer Array to String
Dim commandList(50) As Byte
Dim command As String

字串是String資料型態的變數或字串值,字串是0或多個依序的Char資料型態的字元,
以雙引號括起的文字內容,如下所示:

Dim str As String ="Visual Basic 2010程式設計" 

或 

Dim str1 As String
str1 = "Visual Basic 2010程式設計"

字串長度與大小寫轉換 
函數可以取得字串長度、進行英文字母大小寫轉換和刪除頭尾的空白字元,如下表所示:

函數 說明
Len(Stmt) 傳回整數的字串長度,擁有多少個字元或中文字
UCase(Stmt) 將參數字串或字元的英文字母轉換成大寫
LCase(Stmt) 將參數字串或字元的英文字母轉換成小寫
LTrim(Stmt) 刪除字串開頭的空白字元
RTrim(Stmt) 刪除字串結尾的空白字元
Trim(Stmt) 刪除頭尾兩端的空白字元
Space(num) 傳回參數num個空白字元的字串
Asc(Stmt) 傳回參數Stmt字串第1個字元的ASCII碼,例如:Asc(“A”)為65

取出子字串與字串反轉

函數 說明
Mid(Stmt, start[ , length]) 從參數Stmt字串的start位置(從1開始)取出長度length的子字串,如果沒有length參數,就是從start位置到字串結尾的所有字元
Left(Stmt, length) 從參數Stmt字串從開頭起算共length長度的字元,如果為0傳回空字串,如果大於字串長度,傳回整個字串
Right(Stmt, length) 從參數Stmt字串從右邊回頭起算共length長度的字元,如果為0傳回空字串,如果大於字串長度,傳回整個字串
StrReverse(Stmt) 將參數的Stmt字串反轉,例如:Visual Basic成為cisaB lausiV

        範例練習 :

Dim a, b, c As String

a = "1234567.abc"
b = "98766.abcd"

MsgBox("LEFT : " & Microsoft.VisualBasic.Left(a, 3))
MsgBox("Right : " & Microsoft.VisualBasic.Right(a, 3))
MsgBox("Mid : " & Microsoft.VisualBasic.Mid(a, 4, 3))
MsgBox("Len : " & Microsoft.VisualBasic.Len(a))

InStr函數,傳回在某字串中一字串的最先出現位置,傳回0表示沒有找到,我們可以利用它來判斷字串中是否有關鍵字存在。

Dim str1 As String, str2 As String  
str1 = "1 3  2  abc     "  
str2 = "c"  
msgbox(InStr(1, str1, str2))   
msgbox(InStr(1, str1, str2) >= 1)  

Original="0123456789"
x=Instr(1,Original,",",CompareMethod.Text)
Original.Length=10
x 找不到字串則為0
常用VB字串處理函數
使用內建函數:
Len:計算字串的長度。
範例:strLen=Len("Taiwan")
結果:6

Mid:依開始位置擷取固定長度字串。
範例:strLen=Mid("Taiwan",1,2)
結果:Ta

Left:將字串由左側擷取固定長度。
範例:strLen=Left("Taiwan",2)
結果:Ta
    
Right:將字串由右側擷取固定長度。
範例:str=Right(" Taiwan ",2)
結果:an

Lcase:將字串中的大寫字母變成小寫。
範例:str=Lcase("Taiwan")
結果:taiwan

Ucase:將字串中的小寫字母變成大寫。
範例:str=Ucase("Taiwan")
結果:TAIWAN

Trim:刪頭尾空白
範例:str=Trim("   Taiwan    ")
結果:Taiwan

Ltrim:刪字串左側的空白
範例:str=Ltrim("  Taiwan    ")
結果:Taiwan     

Rtrim:刪字串右側的空白\\
範例:str=Rtrim("  Taiwan    ")
結果:  Taiwan
刪字串 兩側     的空白

Replace:將字串中的某字串,以另一字串代替。
範例:str=Replace("Taiwan","Tai"," Nan ")
結果:Nanwan

Instr:傳回子字串在字串中的第一次出現位置。
範例:strLen=Instr("ABCabc","a")
結果:4

Space:產生指定個數空白。
範例:Space(10)
結果:4個空白

String:產生指定個數的字元。
範例:str=String(5,"$")
結果:$$$$$

範例:str=String(4,66)
結果:BBBB
    
Strreverse:將字串前後反轉。
範例:str=Strreverse(" Taiwan ")
結果:nawiaT

Split:字串分割
範例:str=Split("Taiwan","T")
結果:
str(0)="T"
str(1)="aiwan"

.NET Framework:比較字串
http://msdn.microsoft.com/zh-tw/library/fbh501kz(VS.80).aspx
String.Compare:比較兩個字串的值。傳回整數值。
String.CompareOrdinal:比較兩個字串,不管本地文化特性。傳回整數值。
String.CompareTo:將目前的字串物件與另一個字串加以比較。傳回整數值。
String.StartsWith:判斷字串的開頭是否為傳入的字串。傳回布林值。
String.EndsWith:判斷字串的結尾是否為傳入的字串。傳回布林值。
String.Equals:判斷兩個字串是否相同。傳回布林值。
String.IndexOf:從您正在檢查的字串開頭開始,傳回字元或字串的索引位置。傳回整數值。
String.LastIndexOf:從您正在檢查的字串結尾開始,傳回字元或字串的索引位置。傳回整數值。

 

名稱 說明
Clone 傳回對 String 這個執行個體的參考。
Compare 多載。 比較兩個指定的 String 物件。
CompareOrdinal 多載。 藉由評估每個字串中對應的 Char 物件之數字值,比較兩個 String 物件。
CompareTo 多載。 將這個執行個體與指定的物件或 String 相比較,並傳回它們的相對值指示。
Concat 多載。 串連一個或多個 String 的執行個體,或者一個或多個 Object 執行個體值的 String 表示。
Contains 傳回值,指出指定的 String 物件是否會出現在這個字串內。
Copy 使用與指定的 String 相同的值,建立 String 的新執行個體。
CopyTo 將字元的指定數目從這個執行個體的指定位置,複製到 Unicode 字元陣列的指定位置。
EndsWith 多載。 判斷 String 執行個體的結尾是否符合指定之字串。
Equals 多載。 覆寫。 判斷兩個 String 物件是否具有相同的值。
Format 多載。 以與對應物件值相等的文字,取代指定 String 中的每個格式項目。
GetEnumerator 擷取可以逐一查看這個字串中個別字元的物件。
GetHashCode 覆寫。 傳回這個字串的雜湊程式碼。
GetType  取得目前執行個體的 Type。 (繼承自 Object)。
GetTypeCode 傳回類別 String 的 TypeCode。
IndexOf 多載。 報告這個字串中 String 或一或多個字元之第一個符合項目的索引。
IndexOfAny 多載。 報告指定 Unicode 字元陣列中的任何字元於這個執行個體中第一個符合項目的索引。
Insert 在這個執行個體的指定索引位置,插入 String 的指定執行個體。
Intern 擷取指定的 String 的系統參考。
IsInterned 擷取對指定 String 的參考。
IsNormalized 多載。 指出這個字串是否為特定的 Unicode 正規化格式。
IsNullOrEmpty 指出指定的 String 物件是否為 Null 參照 (即 Visual Basic 中的 Nothing) 或 Empty 字串。
Join 多載。 將指定 String 陣列每個元素之間的指定分隔符號 String 串連,產生單一的串連字串。
LastIndexOf 多載。 報告這個執行個體中指定 Unicode 字元或 String 最後項目的索引位置。
LastIndexOfAny 多載。 報告 Unicode 陣列中的一個或多個指定字元在這個執行個體中最後項目的索引位置。
Normalize 多載。 傳回新的字串,其二進位表示為特定的 Unicode 正規化格式。
op_Equality 判斷兩個指定的 String 物件是否具有相同的值。
op_Inequality 判斷兩個指定的 String 物件是否具有不同的值。
PadLeft 多載。 將這個執行個體中的字元靠右對齊,以空格或指定的 Unicode 字元在左側填補至指定的總長度。
PadRight 多載。 將這個字串中的字元靠左對齊,以空格或指定的 Unicode 字元在右側填補至指定的總長度。
ReferenceEquals  判斷指定的 Object 執行個體是否為相同的執行個體。 (繼承自Object)。
Remove 多載。 從這個執行個體中刪除指定數目的字元。
Replace 多載。 以另一個指定的 Unicode 字元或 String,取代這個執行個體中指定的 Unicode 字元或 String 的所有項目。
Split 多載。 傳回 String 陣列,其中包含這個執行個體中由指定的 Char或 String 陣列之元素所分隔的子字串。
StartsWith 多載。 判斷 String 執行個體的開頭是否符合指定之字串。
Substring 多載。 從這個執行個體擷取子字串。
ToCharArray 多載。 將這個執行個體中的字元複製到 Unicode 字元陣列中。
ToLower 多載。 傳回轉換成小寫的這個 String 複本。
ToLowerInvariant 傳回轉換成小寫的這個 String 物件之複本,透過的方式是使用不因文化特性而異的大小寫規則。
ToString 多載。 覆寫。 將這個執行個體的值轉換為 String。
ToUpper 多載。 傳回轉換成大寫的這個 String 複本。
ToUpperInvariant 傳回轉換成大寫的這個 String 物件之複本,透過的方式是使用不因文化特性而異的大小寫規則。
Trim 多載。 將指定字元集的所有項目從這個執行個體的開頭和結尾移除。
TrimEnd 將陣列中指定的字元集之所有項目從這個執行個體的結尾移除。
TrimStart 將陣列中指定的字元集之所有項目從這個執行個體的開頭移除。

 

String.Substring( ):從指定的字元位置開始截取字串
語法:字串變數.Substring(左起始位數 , 取幾位) 
範例:string s1 = str.Substring(0,2);
String.length():取得字串長度
String.Remove(int1,int2):從int1(起始位置)開始刪除長度為int2的字串
String.Insert(int,string):在int的位置插入string
String.Substring(int):從參數開始取出剩下的字串
String.Substring(int1,int2):取出int1開始長度為int2的字串
String.IndexOf(string):傳回第一次搜尋到字串(string)的位置
String.IndexOf(string,int):傳回第一次搜尋到字串(string)的位置,開始搜尋位置為int
String.LastIndexOf(string):跟IndexOf功能類似,但從後面開始搜尋
String.LastIndexOf(string,int):跟IndexOf功能類似,但從後面開始搜尋
String.Replace(char,char):取代字元
String.ToLower():將英文轉成小寫
String.ToUpper():將英文轉成大寫
String.Trim():刪除字串前後的空白字元
String.TrimEnd():刪除字串尾部的空白字元
String.TrimStart():刪除字串開頭的空白字元
String.PadLeft(2,"0") : 將字串長度不足2位,左邊補 0

副程序

Sub 程序 : 此種程序不會傳回值
Function 程序 : 此種程序會傳回值,Function 也可稱為函式
Event 程序 : 此種程序不會傳回值。
Property 程序 : 此種程序用來傳回和設定物件的屬性。

[Private | Public] Sub 程序名稱 ([引數串列])
	[程式區段]
	[Exit Sub]
	[Return]
End Sub

如何呼叫
Call 程序名稱([引數串列]) or
程序名稱([引數串列])

[Private | Public] Function函式名稱 ([引數串列]) [As 資料型別]
	[程式區段]
	函式名稱 = 運算式 或 (Return 運算式)
	[Exit Function]
End Function

返回參數
函式名稱 = username or Return = Username

如何呼叫
變數名稱 = 函式名稱 ([引數串列])

參數

GetWelcome(ByVal username As String , ByVal ismale As Boolean) As String
GetWelcome(ByRef username As String , ByRef ismale As Boolean) As String

程序引數可選擇性
Sub 程序名稱 (…………, Optional ByVal 引數 As 資料型別= 預設值, ……… ])

Function mult(ByVal x1 As Integer, ByVal x2 As Integer, Optional ByVal x3 As Integer=0) As Integer

如果沒有傳遞第三個引數則以0替代

傳遞陣列
呼叫敘述 inverse(arrayname1) 實引數不需加小括號
被呼叫程序 Sub inverse(ByVal arrayname2() As Integer) 虛引數須加小括號

如果想要到整個程式結束變數才被釋放 則可以使用靜態變數
Static AAA As Integer =10

Property ……….. End Property

程序引數可選擇性

Sub 程序名稱(………, optional ByVal 引數 As 資料型別=預設值, ………)
	程式區段
End Sub

若傳遞引數具有選擇性,可使用 Optional 來宣告,被宣告成選擇性的引數,
必須指定資料型別及預設值,而且其後的引數也必須為選擇性參數。

visual_basic_dot_net.txt · 上一次變更: 2024/04/15 09:13 由 don