單擊按鈕執行操作
使用戶與應用程序交互的最簡便的方法是給用戶提供一個按鈕。可以用VisualBasic提供的CommandButton控件,或利用包含圖形的Image控件,如一個圖標,來創建自己的“按鈕”。
使用CommandButton
大多數VisualBasic應用程序都有CommandButton,使用戶通過簡單的敲擊按鈕來執行操作。當用戶選中按鈕時,不僅會執行相應操作,還會使該按鈕看上去象被按下並釋放一樣。無論何時,只要用戶單擊按鈕,就會調用Click事件過程。將代碼寫入Click事件過程,執行想要執行的動作。
在程序執行時,有多種方法可以選中CommandButton:
用鼠標單擊按鈕。
按TAB鍵把焦點移到相應按鈕上,然後按SPACE鍵或ENTER鍵選中該按鈕。參閱本章後面的“焦點概述”。
按CommandButton的快捷鍵(ALT 下劃線的字符)。
在代碼中設CommandButton的Value屬性為True。cmdClose.Value=True
在代碼中調用CommandButton的Click事件。cmdClose_Click
如果該CommandButton是窗體的缺省命令按鈕,既使將焦點移到其它不是CommandButton的控件上,按下回車鍵也會選中該按鈕。在設計時,通過設置某按鈕的Default屬性為True,指定它為窗體的缺省CommandButton。
如果該CommandButton是窗體的缺省的取消按鈕,即使把焦點移到其它控件上,也能通過按ESC鍵選中該按鈕。在設計時,通過設置某按鈕的Cancel屬性為True,指定它為窗體的缺省的取消按鈕。所有這些操作都使VisualBasic調用Click事件過程。
“測試按鈕”應用程序
利用Caption屬性可以在按鈕上顯示文字,告訴用戶該按鈕的功能。在圖3.4中,在控件示例應用程序的測試按鈕范例中包含一個Caption屬性為"ChangeSignal"的CommandButton(此例的工作為Controls.vbp示例應用程序中的Buttons.frm)。
注意,S是這個按鈕的快捷鍵,用一條下劃線表示。在Caption屬性的正文內插入一個(&)符號,將使得此符號後面的字符成為該按鈕的快捷鍵(例如,Change&Signal)。
用戶單擊CommandButton,將執行該CommandButton的Click事件過程中的代碼。在這個范例中,每次單擊按鈕,將變換一個不同的交通燈圖標。
詳細信息關於CommandButton的屬性的詳細信息,請參閱第七章“使用VisualBasic的標准控件”。
用於顯示和輸入文本的控件
Label和TextBox控件是用於顯示和輸入文本的。讓應用程序在窗體中顯示文本時使用Label,允許用戶輸入文本時用TextBox。Labels中的文本為只讀文本,而TextBox中的文本為可編輯文本。
可由用戶編輯的文本,例如一個順序條目 TextBox
字段或一個密碼框
只能顯示的文本,例如在窗體中標識一個 Label
字段或給用戶顯示指令
Labels和TextBoxes將在以下部分討論:
用Label顯示文本(vbconUsingLabels)使用Label控件的基本知識。
使用TextBox(vbconWorkingWithTextBox)使用TextBox的基本知識。
用Label顯示文本
Label控件顯示的文本用戶不能直接修改。如TextBox和ScrollBar這些沒有自己的Caption屬性的控件,可以用Label標識。在Label中實際顯示的文本是由Caption屬性控制的,該屬性可以在設計時在“屬性”窗口中設置或在運行時用代碼賦值。
在缺省情況下,標題是Label控件中唯一的可見部分。但是,如果把BorderStyle屬性設成1(可以在設計時進行),那麼Label就有了一個邊框,看起來像一個TextBox。還可以通過設置Label的BackColor、BackStyle、ForeColor和Font屬性來,改變Label的外觀。
改變Label尺寸以適應其內容
設計時可在“屬性”窗口中指定單行Label的標題。但是如果要輸入一個較長的或在運行時可能變化的標題,該怎麼辦呢?Label提供了兩種屬性:AutoSize和WordWrap,用於幫助您改變控件尺寸以適合較長或較短的標題。
AutoSize屬性決定控件是否自動改變尺寸以適應其內容。如該屬性設為True,Label就會根據其內容進行水平方向變化,如圖3.5所示。
WordWrap屬性使Label根據其內容進行垂直方向變化,而保持其寬度不變,如圖3.6所示。本例的工作版,請參閱應用程序示例Controls.vbp中的WordWrap.frm。
注意如果在Controls.vbp中運行AotoSize示例,就會發現為了同時使用WordWrap,必須兩個復選框都選中。這是因為,要想使Label的WordWrap屬性起作用,就必須設置AutoSize為True。只有在一個單字的寬度超過控件的當前寬度時,Label的寬度才會增加。
詳細信息關於Label控件屬性的詳細信息,請參閱第七章“使用VisualBasic的標准控件”。
使用TextBoxes
TextBox是一種通用控件,可以由用戶輸入文本或顯示文本。除非把TextBox的Locked屬性設為True,否則不能用TextBox顯示不希望用戶更改的文本。
TextBox中顯示的實際文本是受Text屬性控制的。Text屬性可以用三種方式設置:設計時在“屬性”窗口進行、運行時通過代碼置或在運行時由用戶輸入。通過讀Text屬性能在運行時檢索TextBox的當前內容。
多行TextBox和WordWrap
TextBox在缺省情況下只顯示單行文本,且不顯示ScrollBar。如果文本長度超過可用空間,則只能顯示部分文本。通過設置MultiLine和ScrollBars兩種屬性(只能在設計程序時設置),可以改變TextBox的外觀和行為。
注意不要把ScrollBars屬性與ScrollBar控件混淆,ScrollBar控件並不屬於TextBox,它具有自己的屬性集。
把MultiLine屬性設為True,可以使TextBox在運行時接受或顯示多行文本。只要沒有水平方向ScrollBar,多行TextBox中的文本會自動按字換行。ScrollBars屬性的缺省值被設置為0(None)。自動按字換行省去用戶在行尾插入換行符的麻煩。當一行文本已超過所能顯示的長度時,TextBox自動將文本折回到下一行顯示。
在設計時,不能在“屬性”窗口輸入換行符。在過程中,可以通過插入一個回車加上換行符(ANSI字符13和0)來產生一個行斷點。也可以用常量vbCrLf插入一個回車與換行符組合。例如,下面的事件過程是在加載窗體時,把兩行文本放入一個多行TextBox(Text1)中的示例。
SubForm_Load()
Text1.Text="Herearetwolines"_
&vbCrLf&"inatextbox"
EndSub
使用TextBox中的文本
利用TextBox的SelStart、SelLength和SelText屬性,可以控制TextBox的插入點和選擇行為。這些屬性僅能在運行時使用。
當一個TextBox首次得到焦點時,TextBox缺省的插入點和光標位置在文本的最左邊。用戶可以用鍵盤和鼠標移動它們。當TextBox失去焦點而後再得到時,插入點位置與用戶最後設置的位置一樣。
在有些情況下,它可能與用戶設置不一致。如:在字處理應用程序中,用戶會希望新字符出現在已有文本後面;在數據項應用程序中,用戶會希望他的輸入替換原有條目。使用SelStart和SelLength屬性,用戶可以根據需要改變TextBox的行為。
SelStart屬性是一個數字,指示文本串內的插入點,其中0表示最左邊的位置。如果SelStart屬性值大於或等於文本中的字符數,那麼插入點將被放在最後一個字符之後,如圖3.7所示。該例子的工作版,請參閱應用程序示例Controls.vbp中的Text.frm。 SelLength屬性是一個設置插入點寬度的數值。把SelLength設為大於0的值,會選中並突出顯示從當前插入點開始的SelLength個字符。圖3.8顯示選擇的性能。
如果有一段文本被選中,此時用戶鍵入的文字將替換被選中的文本。有些情況下,也可以用粘貼命令用新文本替換原有的文本。SelText屬性是一串文本,可以在運行時給它賦值以替換當前選中的文本。如果沒有選中的文本,SelText將在當前插入點插入文本。
詳細信息關於TextBox控件的屬性的詳細信息,請參閱第七章“使用VisualBasic的標准控件”。
詳細信息關於TextBox控件的屬性的詳細信息,請參閱第七章“使用VisualBasic的標准控件”。