Visual Basic 編程問題解答

1、如果一行程序太長,查閱起來很麻煩,能不能換行?

VB的程序代碼是允許換行書寫的,只要在每次換行的最後一個字符加上換行字符“_”就可以了。例如:
Sub PicMove()
Frm.Picture2.Left = Frm.Picture1.Left + _ ’加上換行符
Frm.Picture1.Width
End Sub

2、如何在設計的時候清空存在的圖片?

用鼠標點中該圖片,在屬性窗口中選中Picture屬性,按Del鍵便可清空圖片。

3、Visual Basic 如何註釋一段較長程序代碼?

VB註釋程序代碼的符號是“'”,只要在某行程序前面加上“'”,就可以註釋該行程序。但如果程序代碼很長的時候,一行一行地註釋令人覺得難以忍受。VB本身提供了這個功能,在主菜單“視圖”選項的“工具欄”下,選中Edit,VB的界面會出現一排工具按鈕,其中的手形圖標按鈕後的兩個按鈕用於“設置註釋塊”和“解除註釋塊”。

4、怎麼實現鼠標一移上去就出現小提示窗口的功能?

VB 裏每個控件都有ToolTipText屬性,只要加上一行程序就可以了。
例如:Label1.ToolTipText = "這是提示!"。

5、如何獲得當前軟件的運行磁盤目錄和命令行參數?

VB裏面有個系統對象叫App。App.Path就是當前軟件的運行目錄。而命令行參數存放在一個系統變量裏面,叫Command。程序語句如下:
Label1.Caption=App.Path
Label2.Caption=Command$

6、我想換掉鼠標顯示的形狀,怎麼做?

VB提供的系統控件一般都有MousePointer和MouseIcon屬性。我們可以尋找自己喜歡的*.ICO,*.CUR文件,實現的程序如下:
Screen.MousePointer= 99 ’用戶鼠標類型
Screen.MouseIcon=LoadPicture("C:/ABC/1.ICO") ’讀取鼠標的圖標文件

7、如何設置程序的錯誤出口?

On Error語句用於程序的錯誤出口處理。一般的處理方法有兩種。
1) 遇到錯誤跳轉到某一行程序去執行,On Error GoTo someline。
例如:
On Error GoTo ERR_LINE
...
Label1.Caption=“正確執行”
ERR_LINE:
...
Label1.Caption=“出錯了!”
2) 遇到錯誤之後忽略當前錯誤,繼續執行,On Error Resume Next。
例如:
On Error Resume Next
...
Label1.Caption=“不管對不對都要執行”
...

8、怎樣獲得鍵盤輸入和判斷敲鍵的Ascii值?

把窗體的KeyPreview屬性設置成True,然後在Form_KeyPress 事件裏編寫程序代碼如下:
Private Sub Form_KeyPress(KeyAscii As Integer)
Me.Caption = Str(KeyAscii) ‘取得鍵盤輸入的字符
...
End Sub

9、我希望窗體一運行就在屏幕的中央,怎麼實現?

VB的系統對象Screen記錄了當前顯示模式的高度和寬度,可以利用這個值來設置窗體的位置。
Sub CenterForm(frm As Form) ‘定義過程
frm.Move (Screen.width - frm.width) / 2, (Screen.Height - frm.Height) / 2
End Sub
Private Sub Form_Load()
CenterForm Me ’調用過程
End Sub

10、很多軟件都有鼠標在文本框TextBox一按下,就選中所有文字的功能,是怎麼實現的?

Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text) ’過程調用
End Sub

11、如何屏蔽列表框Combo的鍵盤輸入?

Private Sub Combo1_KeyPress(KeyAscii As Integer)
KeyAscii=0 ‘ASCII碼爲0的字符是空操作
End Sub

12、如何使一行字符串垂直顯示?

’自定義函數RotateString:垂直顯示字符串
Function RotateString(in_str As String) As String
Dim tmpstr As String
’把每個字符都取出來加上回車換行符號
For i = 1 To Len(in_str)
tmpstr = tmpstr + Mid$(in_str, i, 1) & vbCrLf ‘ vbCrLf是回車換行符
Next i
RotateString = tmpstr
End Function
‘函數調用
Private Sub Form_Click()
Label1.Caption = RotateString("你知道我在這裏嗎?")
End Sub

13、我想在窗體中按下鼠標右鍵就彈出一個菜單,怎麼做?

首先按下菜單編輯器設計一個菜單PopMenu,把菜單的Visible設置成False。在Form_MouseDown事件中編寫程序如下:
If Button = 2 ’鼠標右鍵按下
PopupMenu PopMenu
End If

14、Visual Basic裏面的整數和字符串如何互相轉換?

VB提供了系統函數Val()和Str(),可以用來實現整數和字符串之間的轉換。
例子如下:
Sub Str2Int()
Dim int1 As Integer
Dim str1 As String
int1=100
str1=Str(int1) ‘整數轉換成字符串
Debug.Print str1
str1=“400”
int1=Val(str1) ‘字符串轉換成整數
Debug.Print int1
End Sub

15、我可以在一個窗體裏執行別的窗體的程序代碼嗎?

是可以的,我們可以用“窗體.代碼”的模式去執行別的窗體的代
碼。先假設我在窗體frm2裏要執行窗體frm1的Form_Click代碼,程
序如下:
Private Sub Form_Click()
frm1.Form_Click() ’在frm2裏執行frm1的From_Click代碼
End Sub

16、如何在不改變數組內容的情況下重定義數組的範圍?

ReDim可以用來重新定義數組的範圍,重定義後還要保留數組的原值,可以用Preserve說明。
例如:
Sub ReDim_Data()
Dim tmpdim() as Integer ’定義一個未知範圍的數組
ReDim tmpdim(10) ’設定數組的範圍
tmpdim(0)=1
tmpdim(1)=2
ReDim Preserve tmpdim(20) ’重新設定數組的範圍,並保留數據
Debug.Print tmpdim(0), tmpdim(1),
End Sub

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章