C#控制元件介紹
目錄
1、窗體(Form)
2、Label (標籤)控制元件
3、TextBox(文字框)控制元件
4、RichTextBox控制元件
5、NumericUpDown控制元件
6、Button(按鈕)控制元件
7、GroupBox(分組框)控制元件
8、RadioButton(單選按鈕)控制元件
9、CheckBox(複選框)控制元件
10、ListBox(列表框)控制元件
11、ComboBox(組合框)控制元件
12、CheckedListBox(複選列表框)控制元件
13、PictureBox(圖片框)控制元件
14、Timer(定時器控制元件或計時器控制元件)控制元件
15、ProgressBar(進度條控制元件)控制元件和TrackBar 控制元件
16、HScrollBar控制元件和VScrollBar控制元件的使用
17、OpenFileDialog(開啟檔案對話方塊)控制元件
18、SaveFileDialog(儲存檔案對話方塊)控制元件
19、FontDialog(字型對話方塊)控制元件
20、ColorDialog(顏色對話方塊)控制元件
21、PrintDialog控制元件和PrintDocument 控制元件
22、使用者自定義對話方塊
23、選單控制元件
24、多窗體程式設計
25、MDI 應用程式設計
26、鍵盤事件處理
27、滑鼠事件處理
1、窗體(Form)
1、常用屬性
(1)Name 屬性:用來獲取或設定窗體的名稱,在應用程式中可通過Name 屬性來引用窗體。
(2) WindowState 屬性: 用來獲取或設定窗體的視窗狀態。取值有三種: Normal (窗體正常顯示)、Minimized(窗體以最小化形式顯示)和Maximized(窗體以最大化形式顯示)。
(3)StartPosition 屬性:用來獲取或設定執行時窗體的起始位置。
(4)Text 屬性:該屬性是一個字串屬性,用來設定或返回在視窗標題欄中顯示的文字。
(5)Width 屬性:用來獲取或設定窗體的寬度。
(6)Height 屬性:用來獲取或設定窗體的高度。
(7)Left 屬性:用來獲取或設定窗體的左邊緣的x 座標(以畫素為單位)。
(8)Top 屬性:用來獲取或設定窗體的上邊緣的y 座標(以畫素為單位)。
(9)ControlBox 屬性:用來獲取或設定一個值,該值指示在該窗體的標題欄中是否顯示控制框。值為true時將顯示控制框,值為false 時不顯示控制框。
(10)MaximizeBox 屬性:用來獲取或設定一個值,該值指示是否在窗體的標題欄中顯示最大化按鈕。值為true 時顯示最大化按鈕,值為false 時不顯示最大化按鈕。
(11)MinimizeBox 屬性:用來獲取或設定一個值,該值指示是否在窗體的標題欄中顯示最小化按鈕。值為true 時顯示最小化按鈕,值為false 時不顯示最小化按鈕。
(12)AcceptButton 屬性:該屬性用來獲取或設定一個值,該值是一個按鈕的名稱,當按Enter 鍵時就相當於單擊了窗體上的該按鈕。
(13)CancelButton 屬性:該屬性用來獲取或設定一個值,該值是一個按鈕的名稱,當按Esc 鍵時就相當於單擊了窗體上的該按鈕。
(14)Modal 屬性:該屬性用來設定窗體是否為有模式顯示窗體。如果有模式地顯示該窗體,該屬性值為true;否則為false。當有模式地顯示窗體時,只能對模式窗體上的物件進行輸入。必須隱藏或關閉模式窗體(通常是響應某個使用者操作),然後才能對另一窗體進行輸入。有模式顯示的窗體通常用做應用程式中的對話方塊。
(15)ActiveControl 屬性:用來獲取或設定容器控制元件中的活動控制元件。窗體也是一種容器控制元件。
(16)ActiveMdiChild 屬性:用來獲取多文件介面(MDI)的當前活動子視窗。
(17)AutoScroll 屬性:用來獲取或設定一個值,該值指示窗體是否實現自動滾動。如果此屬性值設定為true,則當任何控制元件位於窗體工作區之外時,會在該窗體上顯示滾動條。另外,當自動滾動開啟時,窗體的工作區自動滾動,以使具有輸入焦點的控制元件可見。
(18)BackColor 屬性:用來獲取或設定窗體的背景色。
(19)BackgroundImage 屬性:用來獲取或設定窗體的背景影象。
(20)Enabled 屬性:用來獲取或設定一個值,該值指示控制元件是否可以對使用者互動作出響應。如果控制元件可以對使用者互動作出響應,則為true;否則為false。預設值為true。
(21)Font 屬性:用來獲取或設定控制元件顯示的文字的字型。
(22)ForeColor 屬性:用來獲取或設定控制元件的前景色。
(23)IsMdiChild 屬性:獲取一個值,該值指示該窗體是否為多文件介面(MDI)子窗體。值為true 時,是子窗體,值為false 時,不是子窗體。
(24)IsMdiContainer 屬性:獲取或設定一個值,該值指示窗體是否為多文件介面(MDI)中的子窗體的容器。值為true 時,是子窗體的容器,值為false 時,不是子窗體的容器。
(25)KeyPreview 屬性:用來獲取或設定一個值,該值指示在將按鍵事件傳遞到具有焦點的控制元件前,窗體是否將接收該事件。值為true 時,窗體將接收按鍵事件,值為false 時,窗體不接收按鍵事件。
(26)MdiChildren 屬性:陣列屬性。陣列中的每個元素表示以此窗體作為父級的多文件介面(MDI)子窗體。
(27)MdiParent 屬性:用來獲取或設定此窗體的當前多文件介面(MDI)父窗體。
(28)ShowInTaskbar 屬性:用來獲取或設定一個值,該值指示是否在Windows 工作列中顯示窗體。
(29)Visible 屬性:用於獲取或設定一個值,該值指示是否顯示該窗體或控制元件。值為true時顯示窗體或控制元件,為false 時不顯示。
(30)Capture 屬性:如果該屬性值為true,則滑鼠就會被限定只由此控制元件響應,不管滑鼠是否在此控制元件的範圍內。
2、常用方法
下面介紹一些窗體的最常用方法。
(1)Show 方法:該方法的作用是讓窗體顯示出來,其呼叫格式為: 窗體名.Show();
其中窗體名是要顯示的窗體名稱。
(2)Hide 方法:該方法的作用是把窗體隱藏出來,其呼叫格式為: 窗體名.Hide();
其中窗體名是要隱藏的窗體名稱。
(3)Refresh 方法:該方法的作用是重新整理並重畫窗體,其呼叫格式為: 窗體名.Refresh();
其中窗體名是要重新整理的窗體名稱。
(4)Activate 方法:該方法的作用是啟用窗體並給予它焦點。其呼叫格式為: 窗體名.Activate();
其中窗體名是要啟用的窗體名稱。
(5)Close 方法:該方法的作用是關閉窗體。其呼叫格式為:
窗體名.Close();
其中窗體名是要關閉的窗體名稱。
(6)ShowDialog 方法:該方法的作用是將窗體顯示為模式對話方塊。其呼叫格式為:
窗體名.ShowDialog();
3.常用事件
(1)Load 事件:該事件在窗體載入到記憶體時發生,即在第一次顯示窗體前發生。
(2)Activated 事件:該事件在窗體啟用時發生。
(3)Deactivate 事件:該事件在窗體失去焦點成為不活動窗體時發生。
(4)Resize 事件:該事件在改變窗體大小時發生。
(5)Paint 事件:該事件在重繪窗體時發生。
(6)Click 事件:該事件在使用者單擊窗體時發生。
(7)DoubleClick 事件:該事件在使用者雙擊窗體時發生。
(8)Closed 事件:該事件在關閉窗體時發生。
文字框類控制元件
2、Label (標籤)控制元件
1、常用屬性:
(1)Text 屬性:用來設定或返回標籤控制元件中顯示的文字資訊。
(2)AutoSize 屬性:用來獲取或設定一個值,該值指示是否自動調整控制元件的大小以完整顯示其內容。取值為true 時,控制元件將自動調整到剛好能容納文字時的大小,取值為false 時,控制元件的大小為設計時的大小。預設值為false。
(3)Anchor 屬性:用來確定此控制元件與其容器控制元件的固定關係的。所謂容器控制元件指的是這樣一種情況:往往在控制元件之中還有一個控制元件,例如最典型的就是窗體控制元件中會包含很多的控制元件,像標籤控制元件、文字框等。這時稱包含控制元件的控制元件為容器控制元件或父控制元件,而父控制元件稱為子控制元件。這時將遇到一個問題,即子控制元件與父控制元件的位置關係問題,即當父控制元件的位置、大小變化時,子控制元件按照什麼樣的原則改變其位置、大小。Anchor 屬性就規定了這個原則。對於Anchor 屬性,可以設定Top、Bottom、Right、Left 中的任意幾種,設定的方法是在屬性視窗中單擊Anchor 屬性右邊的箭頭,將會出現如圖9-6 的視窗,通過它可設定Anchor 屬性值。圖9-6 中選中變黑的方位即為設定的方位控制,即圖中所示的為Left、Right、Bottom。此時,如果父視窗變化,子視窗將保證其左邊緣與容器左邊的距離、上邊緣與容器上邊的距離、底邊與容器底邊的距離等不變,效果如圖9-7 所示。可見隨著窗體的大小變化, Label 控制元件也會隨著變。而不變的則是Archor 中所規定的邊緣與相應的父控制元件邊緣的距離。
(4)BackColor 屬性:用來獲取或設定控制元件的背景色。當該屬性值設定為Color.Transparent 時,標籤將透明顯示,即背景色不再顯示出來。
(5)BorderStyle 屬性:用來設定或返回邊框。有三種選擇:
BorderStyle.None 為無邊框(預設),BorderStyle.FixedSingle 為固定單邊框,BorderStyle.Fixed3D 為三維邊框。
(6)TabIndex 屬性:用來設定或返回物件的Tab 鍵順序。(7)Enabled 屬性:用來設定或返回控制元件的狀態。值為true 時允許使用控制元件,值為false 時禁止使用控制元件,此時標籤呈暗淡色,一般在程式碼中設定。圖9-8 邊框效果圖另外,標籤還具有Visible、ForeColor、Font 等屬性,具體含義請參考窗體的相應屬性。
3、TextBox (文字框)控制元件
1、主要屬性:
(1)Text 屬性:Text 屬性是文字框最重要的屬性,因為要顯示的文字就包含在Text 屬性中。預設情況下,最多可在一個文字框中輸入2048 個字元。如果將MultiLine 屬性設定為true,則最多可輸入32KB 的文字。Text 屬性可以在設計時使用【屬性】視窗設定,也可以在執行時用程式碼設定或者通過使用者輸入來設定。可以在執行時通過讀取Text 屬性來獲得文字框的當前內容。
(2)MaxLength 屬性:用來設定文字框允許輸入字元的最大長度,該屬性值為0時,不限制輸入的字元數。
(3)MultiLine 屬性:用來設定文字框中的文字是否可以輸入多行並以多行顯示。值為true時,允許多行顯示。值為false 時不允許多行顯示,一旦文字超過文字框寬度時,超過部分不顯示。
(4)HideSelection 屬性:用來決定當焦點離開文字框後,選中的文字是否還以選中的方式顯示,值為true,則不以選中的方式顯示,值為false 將依舊以選中的方式顯示。
(5)ReadOnly 屬性:用來獲取或設定一個值,該值指示文字框中的文字是否為只讀。值為true 時為只讀,值為false 時可讀可寫。
(6)PasswordChar 屬性:是一個字串型別,允許設定一個字元,執行程式時,將輸入到Text 的內容全部顯示為該屬性值,從而起到保密作用,通常用來輸入口令或密碼。
(7) ScrollBars 屬性: 用來設定滾動條模式, 有四種選擇: ScrollBars.None (無滾動條), ScrollBars.Horizontal(水平滾動條),ScrollBars.Vertical(垂直滾動條),ScrollBars.Both(水平和垂直滾動條)。
注意:只有當MultiLine 屬性為true 時,該屬性值才有效。在WordWrap 屬性值為true 時,水平滾動條將不起作用
(8)SelectionLength 屬性:用來獲取或設定文字框中選定的字元數。只能在程式碼中使用,值為0 時,表示未選中任何字元。
(9)SelectionStart 屬性:用來獲取或設定文字框中選定的文字起始點。只能在程式碼中使用,第一個字元的位置為0,第二個字元的位置為1,依此類推。
(10)SelectedText 屬性:用來獲取或設定一個字串,該字串指示控制元件中當前選定的文字。只能在程式碼中使用。
(11)Lines:該屬性是一個數組屬性,用來獲取或設定文字框控制元件中的文字行。即文字框中的每一行存放在Lines 陣列的一個元素中。
(12)Modified:用來獲取或設定一個值,該值指示自建立文字框控制元件或上次設定該控制元件的內容後,使用者是否修改了該控制元件的內容。值為true 表示修改過,值為false 表示沒有修改過。
(13)TextLength 屬性:用來獲取控制元件中文字的長度。
(14)WordWrap:用來指示多行文字框控制元件在輸入的字元超過一行寬度時是否自動換行到下一行的開始,值為true,表示自動換到下一行的開始,值為false 表示不自動換到下一行的開始。
2、常用方法:
(1)AppendText 方法:把一個字串新增到檔案框中文字的後面,呼叫的一般格式如下:
文字框物件.AppendText(str),引數str 是要新增的字串。
(2)Clear 方法:從文字框控制元件中清除所有文字。呼叫的一般格式如下: 文字框物件.Clear()該方法無引數。
(3)Focus 方法:是為文字框設定焦點。如果焦點設定成功,值為true,否則為false。呼叫的一般格式如下:
文字框物件.Focus()該方法無引數。
(4)Copy 方法:將文字框中的當前選定內容複製到剪貼簿上。呼叫的一般格式如下:
文字框物件.Copy()該方法無引數。
(5)Cut 方法:將文字框中的當前選定內容移動到剪貼簿上。呼叫的一般格式如下:
文字框物件.Cut()該方法無引數。
(6)Paste 方法:用剪貼簿的內容替換文字框中的當前選定內容。呼叫的一般格式如下:
文字框物件.Paste()該方法無引數。
(7)Undo 方法:撤銷文字框中的上一個編輯操作。呼叫的一般格式如下: 文字框物件.Undo()該方法無引數。
(8)ClearUndo 方法:從該文字框的撤銷緩衝區中清除關於最近操作的資訊,根據應用程式的狀態,可以使用此方法防止重複執行撤銷操作。呼叫的一般格式如下:
文字框物件.ClearUndo()該方法無引數。
(9)Select 方法:用來在文字框中設定選定文字。呼叫的一般格式如下: 文字框物件.Select(start,length)
該方法有兩個引數,第一個引數start 用來設定文字框中當前選定文字的第一個字元的位置,第二個引數length 用來設定要選擇的字元數。
(10)SelectAll 方法:用來選定文字框中的所有文字。呼叫的一般格式如下: 文字框物件.SelectAll()該方法無引數。
3、常用事件:
(1)GotFocus 事件:該事件在文字框接收焦點時發生。
(2)LostFocus 事件:該事件在文字框失去焦點時發生。
(3)TextChanged 事件:該事件在Text 屬性值更改時發生。無論是通過程式設計修改還是使用者互動更改文字框的Text 屬性值,均會引發此事件。
4、RichTextBox 控制元件
RichTextBox 是一種既可以輸入文字、又可以編輯文字的文書處理控制元件, 與TextBox 控制元件相比, RichTextBox控制元件的文書處理功能更加豐富, 不僅可以設定文字的顏色、字型, 還具有字串檢索功能。另外, RichTextBox控制元件還可以開啟、編輯和儲存.rtf 格式檔案、ASCII 文字格式檔案及Unicode 編碼格式的檔案。
1、常用屬性
上面介紹的TextBox 控制元件所具有的屬性,RichTextBox 控制元件基本上都具有,除此之外,該控制元件還具有一些其他屬性。
(1)RightMargin 屬性:用來設定或獲取右側空白的大小,單位是畫素。通過該屬性可以設定右側空白,如希望右側空白為50 畫素,可使用如下語句: RichTextBox1.RightMargin=RichTextBox1.Width-50;
(2)Rtf 屬性:用來獲取或設定RichTextBox 控制元件中的文字,包括所有RTF 格式程式碼。可以使用此屬性將RTF 格式文字放到控制元件中以進行顯示,或提取控制元件中的RTF 格式文字。此屬性通常用於在RichTextBox 控制元件和其他RTF 源(如MicrosoftWord 或Windows 寫字板)之間交換資訊。
(3)SelectedRtf 屬性:用來獲取或設定控制元件中當前選定的RTF 格式的格式文字。此屬性使使用者得以獲取控制元件中的選定文字,包括RTF 格式程式碼。如果當前未選定任何文字,給該屬性賦值將把所賦的文字插入到插入點處。如果選定了文字,則給該屬性所賦的文字值將替換掉選定文字。
(4)SelectionColor 屬性:用來獲取或設定當前選定文字或插入點處的文字顏色。
(5)SelectionFont 屬性:用來獲取或設定當前選定文字或插入點處的字型。
2、常用方法
前面介紹的TextBox 控制元件所具有的方法,RichTextBox 控制元件基本上都具有,除此之外,該控制元件還具有一些其他方法。
(1)Redo 方法:用來重做上次被撤銷的操作。呼叫的一般格式如下: RichTextBox 物件.Redo()
該方法無引數。
(2)Find 方法:用來從RichTextBox 控制元件中查詢指定的字串。經常使用的呼叫格式如下:
[格式1]:RichTextBox 物件.Find(str)
[功能]:在指定的“RichTextBox”控制元件中查詢文字,並返回搜尋文字的第一個字元在控制元件內的位置。如果未找到搜尋字串或者str 引數指定的搜尋字串為空,則返回值為1。
[格式2]:RichTextBox 物件.Find(str,RichTextBoxFinds)
[功能]:在“RichTextBox 物件”指定的文字框中搜索str 引數中指定的文字,並返回文字的第一個字元在控制元件內的位置。如果返回負值,則未找到所搜尋的文字字串。還可以使用此方法搜尋特定格式的文字。引數RichTextBoxFinds 指定如何在控制元件中執行文字搜尋,其取值及其含義如表9-4 所示。
[格式3]:RichTextBox 物件.Find(str,start,RichTextBoxFinds)
[功能]:這裡Find 方法與前面的格式2 基本類似,不同的只是通過設定控制元件文字內的搜尋起始位置來縮小文字搜尋範圍,start 引數表示開始搜尋的位置。此功能使使用者得以避開可能已搜尋過的文字或已經知道不包含要搜尋的特定文字的文字。如果在options 引數中指定了RichTextBoxFinds.Reverse 值,則start 引數的值將指示反向搜尋結束的位置,因為搜尋是從文件底部開始的。
(3)SaveFile 方法:用來把RichTextBox 中的資訊儲存到指定的檔案中,呼叫格式有以下三種。
[格式1]:RichTextBox 物件名.SaveFile(檔名);
[功能]:將RichTextBox 控制元件中的內容儲存為RTF 格式檔案中。
[格式2]:RichTextBox 物件名.SaveFile(檔名,檔案型別);
[功能]:將RichTextBox 控制元件中的內容儲存為“檔案型別”指定的格式檔案中。
[格式3]:RichTextBox 物件名.SaveFile(資料流,資料流型別);
[功能]:將RichTextBox 控制元件中的內容儲存為“資料流型別”指定的資料流型別檔案中。其中,檔案型別或資料流型別的取值及含義如表9-5 所示。
(4)LoadFile 方法:使用LoadFile 方法可以將文字檔案、RTF 檔案裝入RichTextBox 控制元件。
主要的呼叫格式有以下三種。
[格式1]:RichTextBox 物件名.LoadFile(檔名);
[功能]:將RTF 格式檔案或標準ASCII 文字檔案載入到RichTextBox 控制元件中。
[格式2]:RichTextBox 物件名.LoadFile(資料流,資料流型別);
[功能]:將現有資料流的內容載入到RichTextBox 控制元件中。
[格式3]:RichTextBox 物件名.LoadFile(檔名,檔案型別);
[功能]:將特定型別的檔案載入到RichTextBox 控制元件中。
注意:檔案型別和資料流格式見表9-5。
5、NumericUpDown 控制元件
【Windows 窗體】控制元件組中的NumericUpDown 控制元件看起來像是一個文字框與一對使用者可單擊以調整值的箭頭的組合。可以通過單擊向上和向下按鈕、按向上和向下箭頭鍵來增大和減小數字,也可以直接輸入數字。單擊向上箭頭鍵時,值向最大值方向增加;單擊向下箭頭鍵時,值向最小值方向減少。該控制元件在工具箱中的圖示為。該控制元件的樣式如圖9-13 所示。
1、常用屬性:
(1)DecimalPlaces:獲取或設定該控制元件中顯示的小數位數。
(2)Hexadecimal:獲取或設定一個值,該值指示該控制元件是否以十六進位制格式顯示所包含的值。
(3)Increment:獲取或設定單擊向上或向下按鈕時,該控制元件遞增或遞減的值。
(4)Maximum:獲取或設定該控制元件的最大值。
(5)Minimum:獲取或設定該控制元件的最小值。
(6)Value:獲取或設定該控制元件的當前值。
與TextBox 控制元件一樣,NumericUpDown 控制元件的常用事件有:ValueChanged、GotFocus、LostFocus 等。
按鈕類控制元件
6、Button(按鈕) 控制元件
Button 控制元件又稱按鈕控制元件,是Windows 應用程式中最常用的控制元件之一,通常用它來執行命令。如果按鈕具有焦點,就可以使用滑鼠左鍵、Enter 鍵或空格鍵觸發該按鈕的Click 事件。通過設定窗體的AcceptButton或CancelButton 屬性,無論該按鈕是否有焦點,都可以使使用者通過按Enter 或Esc 鍵來觸發按鈕的Click事件。一般不使用Button 控制元件的方法。Button 控制元件也具有許多如Text、ForeColor 等的常規屬性,此處不再介紹,只介紹該控制元件有特色的屬性。以後介紹的控制元件也採用同樣的方法來處理。
1、常用屬性
(1)DialogResult 屬性:當使用ShowDialog 方法顯示窗體時,可以使用該屬性設定當用戶按了該按鈕後,ShowDialog 方法的返回值。值有:OK、Cancel、Abort、Retry、Ignore、Yes、No 等。
(2)Image 屬性:用來設定顯示在按鈕上的影象。
(3)FlatStyle 屬性:用來設定按鈕的外觀。其取值及含義如表9-7 所示。
2、常用事件:
(1)Click 事件:當用戶用滑鼠左鍵單擊按鈕控制元件時,將發生該事件。
(2)MouseDown 事件:當用戶在按鈕控制元件上按下滑鼠按鈕時,將發生該事件。
(3)MouseUp 事件:當用戶在按鈕控制元件上釋放滑鼠按鈕時,將發生該事件。
7、GroupBox (分組框)控制元件
GroupBox 控制元件又稱為分組框,它在工具箱中的圖示是。該控制元件常用於為其他控制元件提供可識別的分組,其典型的用法之一就是給RadioButton 控制元件分組。可以通過分組框的Text 屬性為分組框中的控制元件向用戶提供提示資訊,如圖9-14 所示。設計時,向GroupBox 控制元件中新增控制元件的方法有兩種:一是直接在分組框中繪製控制元件;二是把某一個已存在的控制元件複製到剪貼簿上,然後選中分組框,再執行貼上操作即可。位於分組框中的所有控制元件隨著分組框的移動而一起移動,隨著分組框的刪除而全部刪除,分組框的Visible 屬性和Enabled 屬性也會影響到分組框中的所有控制元件。分組框的最常用的屬性是Text,一般用來給出分組提示。
8、RadioButton (單選按鈕)控制元件
RadioButton 又稱單選按鈕,其在工具箱中的圖示為,單選按鈕通常成組出現,用於提供兩個或多個互斥選項,即在一組單選鈕中只能選擇一個,如圖9-14 所示。
1、常用屬性:
(1)Checked 屬性:用來設定或返回單選按鈕是否被選中,選中時值為true,沒有選中時值為false。
(2)AutoCheck 屬性:如果AutoCheck 屬性被設定為true(預設),那麼當選擇該單選按鈕時,將自動清除該組中所有其他單選按鈕。對一般使用者來說,不需改變該屬性,採用預設值(true)即可。
(3)Appearance 屬性:用來獲取或設定單選按鈕控制元件的外觀。當其取值為Appearance.Button 時,將使單選按鈕的外觀像命令按鈕一樣:當選定它時,它看似已被按下。當取值為Appearance.Normal 時,就是預設的單選按鈕的外觀。
(4)Text 屬性:用來設定或返回單選按鈕控制元件內顯示的文字,該屬性也可以包含訪問鍵,即前面帶有“&”符號的字母,這樣使用者就可以通過同時按Alt 鍵和訪問鍵來選中控制元件。
2、常用事件:
(1)Click 事件:當單擊單選按鈕時,將把單選按鈕的Checked 屬性值設定為true,同時發生Click 事件。
(2)CheckedChanged 事件:當Checked 屬性值更改時,將觸發CheckedChanged 事件。
9、CheckBox (複選框)控制元件
CheckBox 控制元件的常用屬性如下。
(1)TextAlign 屬性:用來設定控制元件中文字的對齊方式,有9 種選擇,如圖9-16 所示。從上到下、從左至右分別是:ContentAlignment.TopLeft、ContentAlignment.TopCenter、ContentAlignment.TopRight、ContentAlignment.MiddleLeft、ContentAlignment.MiddleCenter、ContentAlignment.MiddleRight、ContentAlignment.BottomLeft、ContentAlignment.BottomCenter和ContentAlignment.BottomRight。該屬性的預設值為ContentAlignment.MiddleLeft,即文字左對齊、居控制元件垂直方向中央。
(2)ThreeState 屬性:用來返回或設定複選框是否能表示三種狀態,如果屬性值為true 時,表示可以表示三種狀態—選中、沒選中和中間態(CheckState.Checked、CheckState.Unchecked和CheckState.Indeterminate),屬性值為false 時,只能表示兩種狀態——選中和沒選中。
(3)Checked 屬性:用來設定或返回複選框是否被選中,值為true 時,表示複選框被選中,值為false 時,表示複選框沒被選中。當ThreeState 屬性值為true 時,中間態也表示選中。
(4)CheckState 屬性:用來設定或返回複選框的狀態。在ThreeState 屬性值為false 時,取值有CheckState.Checked 或CheckState.Unchecked。在ThreeState 屬性值被設定為True時,CheckState 還可以取值CheckState.Indeterminate,在此時,複選框顯示為淺灰色選中狀態,該狀態通常表示該選項下的多個子選項未完全選中。
CheckBox 控制元件的常用事件有Click 和CheckedChanged 等,其含義及觸發時機與單選按鈕完成一致。
列表類控制元件
10、ListBox (列表框)控制元件
ListBox 控制元件又稱列表框,它在工具箱中的圖示為,它顯示一個專案列表供使用者選擇。在列表框中,使用者一次可以選擇一項,也可以選擇多項。
1、常用屬性:
(1) Items 屬性: 用於存放列表框中的列表項,是一個集合。通過該屬性,可以新增列表項、移除列表項和獲得列表項的數目。
(2)MultiColumn 屬性:用來獲取或設定一個值,該值指示ListBox 是否支援多列。值為true 時表示支援多列,值為false 時不支援多列。當使用多列模式時,可以使控制元件得以顯示更多可見項,如圖9-19 所示。
(3)ColumnWidth 屬性:用來獲取或設定多列ListBox 控制元件中列的寬度。
(4)SelectionMode 屬性:用來獲取或設定在ListBox 控制元件中選擇列表項的方法。當SelectionMode 屬性設定為SelectionMode.MultiExtended 時,按下Shift 鍵的同時單擊滑鼠或者同時按Shift鍵和箭頭鍵之一(上箭頭鍵、下箭頭鍵、左箭頭鍵和右箭頭鍵),會將選定內容從前一選定項擴充套件到當前項。按Ctrl 鍵的同時單擊滑鼠將選擇或撤銷選擇列表中的某項;當該屬性設定為SelectionMode.MultiSimple 時,滑鼠單擊或按空格鍵將選擇或撤銷選擇列表中的某項;該屬性的預設值為SelectionMode.One,則只能選擇一項。
(5)SelectedIndex 屬性:用來獲取或設定ListBox 控制元件中當前選定項的從零開始的索引。如果未選定任何項,則返回值為1。對於只能選擇一項的ListBox 控制元件,可使用此屬性確定ListBox 中選定的項的索引。如果ListBox 控制元件的SelectionMode 屬性設定為SelectionMode.MultiSimple 或SelectionMode.MultiExtended,並在該列表中選定多個項,此時應用SelectedIndices 來獲取選定項的索引。
(6)SelectedIndices。該屬性用來獲取一個集合,該集合包含ListBox 控制元件中所有選定項的從零開始的索引。
(7)SelectedItem 屬性:獲取或設定ListBox 中的當前選定項。
(8)SelectedItems 屬性:獲取ListBox 控制元件中選定項的集合,通常在ListBox 控制元件的SelectionMode 屬性值設定為SelectionMode.MultiSimple 或SelectionMode.MultiExtended(它指示多重選擇ListBox)時使用。
(9)Sorted 屬性:獲取或設定一個值,該值指示ListBox 控制元件中的列表項是否按字母順序排序。如果列表項按字母排序,該屬性值為true;如果列表項不按字母排序,該屬性值為false。預設值為false。在向已排序的ListBox 控制元件中新增項時,這些項會移動到排序列表中適當的位置。
(10)Text 屬性:該屬性用來獲取或搜尋ListBox 控制元件中當前選定項的文字。當把此屬性值設定為字串值時,ListBox 控制元件將在列表內搜尋與指定文字匹配的項並選擇該項。若在列表中選擇了一項或多項,該屬性將返回第一個選定項的文字。
(11)ItemsCount 屬性:該屬性用來返回列表項的數目。
2、常用方法:
(1)FindString 方法:用來查詢列表項中以指定字串開始的第一個項,有兩種呼叫格式。
[格式1]:ListBox 物件.FindString(s);
[功能]:在“ListBox 物件”指定的列表框中查詢字串s,如果找到則返回該項從零開始的索引;如果找不到匹配項,則返回ListBox.NoMatches。
[格式2]:ListBox 物件.FindString(s,n);
[功能]:在ListBox 物件指定的列表框中查詢字串s,查詢的起始項為n+1,即n 為開始查詢的前一項的索引。如果找到則返回該項從零開始的索引;如果找不到匹配項,則返回ListBox.NoMatches。
注意:FindString 方式只是詞語部分匹配,即要查詢的字串在列表項的開頭,便認為是匹配的,如果要精確匹配,即只有在列表項與查詢字串完全一致時才認為匹配,可使用FindStringExact 方法,呼叫格式與功能與FindString 基本一致。
(2)SetSelected 方法:用來選中某一項或取消對某一項的選擇,呼叫格式及功能如下。
[格式]:ListBox 物件.SetSelected(n,l);
[功能]:如果引數l 的值是true,則在ListBox 物件指定的列表框中選中索引為n 的列表項,如果引數l 的值是false,則索引為n 的列表項未被選中。
(3)Items.Add 方法:用來向列表框中增添一個列表項,呼叫格式及功能如下。
[格式]:ListBox 物件.Items.Add(s);
[功能]:把引數s 新增到“listBox 物件”指定的列表框的列表項中。
(4)Items.Insert 方法:用來在列表框中指定位置插入一個列表項,呼叫格式及功能如下。
[格式]:ListBox 物件.Items.Insert(n,s);
[功能]:引數n 代表要插入的項的位置索引,引數s 代表要插入的項,其功能是把s 插入到“listBox 物件”指定的列表框的索引為n 的位置處。
(5)Items.Remove 方法:用來從列表框中刪除一個列表項,呼叫格式及功能如下。
[格式]:ListBox 物件.Items.Remove(k);
[功能]:從ListBox 物件指定的列表框中刪除列表項s。
(6)Items.Clear 方法:用來清除列表框中的所有項。其呼叫格式如下: ListBox 物件.Items.Clear();該方法無引數。
(7)BeginUpdate 方法和EndUpdate 方法:這兩個方法均無引數,呼叫格式分別如下:
ListBox 物件.BeginUpdate();
ListBox 物件.EndUpdate();
這兩個方法的作用是保證使用Items.Add 方法向列表框中新增列表項時,不重繪列表框。即在向列表框新增項之前,呼叫BeginUpdate 方法,以防止每次向列表框中新增項時都重新繪製ListBox 控制元件。完成向列表框中新增項的任務後,再呼叫EndUpdate 方法使ListBox控制元件重新繪製。當向列表框中新增大量的列表項時,使用這種方法新增項可以防止在繪製ListBox 時的閃爍現象。一個例子程式如下:
Public void AddToMyListBox()
{
listBox1.BeginUpdate();
for(intx=1;x<5000;x++)
{
listBox1.Items.Add(“Item”+x.ToString());
}
listBox1.EndUpdate();
}
ListBox 控制元件常用事件有Click 和SelectedIndexChanged,SelectedIndexChanged 事件在列表框中改變選中項時發生。
11、ComboBox(組合框) 控制元件
ComboBox 控制元件又稱組合框,在工具箱中的圖示為。預設情況下,組合框分兩個部分顯示:頂部是一個允許輸入文字的文字框,下面的列表框則顯示列表項。可以認為ComboBox 就是文字框與列表框的組合,與文字框和列表框的功能基本一致。與列表框相比,組合框不能多選,它無SelectionMode 屬性。但組合框有一個名為DropDownStyle 的屬性,該屬性用來設定或獲取組合框的樣式,其取值及含義如表9-10 所示。
組合框的各種樣式如圖9-22 所示, 左邊的組合框能夠通過文字框輸入文字, 中間的組合框則不能輸入文字,只能選擇列表項。
12、CheckedListBox(複選列表框) 控制元件
CheckedListBox 控制元件又稱複選列表框,它擴充套件了ListBox 控制元件,它幾乎能完成列表框可以完成的所有任務,並且還可以在列表項旁邊顯示覆選標記。兩種控制元件間的其他差異在於,複選列表框只支援DrawMode.Normal,並且複選列表框只能有一項選定或沒有任何選定。此處需要注意一點:
選定的項是指窗體上突出顯示的項,已選中的項是指左邊的複選框被選中的項。複選列表框的樣式如圖9-23所示。除具有列表框的全部屬性外,它還具有以下屬性。
(1)CheckOnClick 屬性:獲取或設定一個值,該值指示當某項被選定時是否應切換左側的複選框。如果立即切換選中標記,則該屬性值為true;否則為false。預設值為false。
(2)CheckedItems 屬性:該屬性是複選列表框中選中項的集合,只代表處於CheckState. Checked 或CheckState.Indeterminate 狀態的那些項。該集合中的索引按升序排列。
(3)CheckedIndices 屬性:該屬性代表選中項(處於選中狀態或中間狀態的那些項)索引的集合。
13、PictureBox(圖片框) 控制元件的使用
PictureBox 控制元件又稱圖片框,常用於圖形設計和影象處理應用程式,在該控制元件中可以載入的影象檔案格式有:點陣圖檔案(.Bmp)、圖示檔案(.ICO)、圖元檔案(.wmf)、.JPEG 和.GIF 檔案。下而僅介紹該控制元件的常用屬性和事件。
1、常用屬性:
(1)Image 屬性:用來設定控制元件要顯示的影象。把檔案中的影象載入到圖片框通常採用以下三種方式。
設計時單擊Image 屬性,在其後將出現【„】按鈕,單擊該按鈕將出現一個【開啟】對話方塊,在該對話方塊中找到相應的圖形檔案後單擊【確定】按鈕。產生一個Bitmap 類的例項並賦值給Image 屬性。
形式如下:
Bitmapp=newBitmap(影象檔名);
pictureBox 物件名.Image=p;
通過Image.FromFile 方法直接從檔案中載入。形式如下:
pictureBox 物件名.Image=Image.FromFile(影象檔名);
(2)SizeMode 屬性:用來決定影象的顯示模式。
14、Timer (定時器控制元件或計時器控制元件)控制元件
Timer 控制元件又稱定時器控制元件或計時器控制元件,在工具箱中的圖示是,該控制元件的主要作用是按一定的時間間隔週期性地觸發一個名為Tick 的事件, 因此在該事件的程式碼中可以放置一些需要每隔一段時間重複執行的程式段。在程式執行時,定時器控制元件是不可見的。
1、常用屬性:
(1)Enabled 屬性:用來設定定時器是否正在執行。值為true 時,定時器正在執行,值為false 時,定時器不在執行。
(2)Interval 屬性:用來設定定時器兩次Tick 事件發生的時間間隔,以毫秒為單位。如它的值設定為500,則將每隔0.5 秒發生一個Tick 事件。
2、常用方法:
(1)Start 方法:用來啟動定時器。呼叫的一般格式如下:
Timer 控制元件名.start();
該方法無引數。
(2)Stop 方法:用來停止定時器。呼叫的一般格式如下:
Timer 控制元件名.stop();
該方法無引數。
3、常用事件:
定義器控制元件響應的事件只有Tick,每隔Interval 時間後將觸發一次該事件。
15、ProgressBar(進度條控制元件) 控制元件
和TrackBar 控制元件(滑塊控制元件、跟蹤條控制元件)
1、ProgressBar 控制元件
ProgressBar 控制元件又稱進度條控制元件,它在工具欄中的圖示為,該控制元件在水平欄中顯示適當長度的矩形來指示程序的進度。當執行程序時,進度條用系統突出顯示顏色在水平欄中從左向右進行填充。程序完成時,進度欄被填滿。當某程序執行時間較長時,如果沒有視覺提示,使用者可能會認為應用程式不響應,通過在應用程式中使用進度條,就可以告訴使用者應用程式正在執行冗長的任務且應用程式仍在響應。
ProgressBar 控制元件的常用屬性如下。
(1)Maximum 屬性:用來設定或返回進度條能夠顯示的最大值,預設值為100。
(2)Minimum 屬性:用來設定或返回進度條能夠顯示的最小值,預設值為0。
(3)Value 屬性:用來設定或返回進度條的當前位置。
(4)Step 屬性:用來設定或返回一個值,該值用來決定每次呼叫PerformStep 方法時, Value 屬性增加的幅度。例如,如果要複製一組檔案,則可將Step 屬性的值設定為1,並將Maximum 屬性的值設定為要複製的檔案總數。在複製每個檔案時,可以呼叫PerformStep 方法按Step 屬性的值增加進度欄。
ProgressBar 控制元件的常用方法如下。
(1)Increment 方法:用來按指定的數量增加進度條的值,呼叫的一般格式如下:
progressBar 物件.Increment(n);
其功能是把“progressBar 物件”指定的進度條物件的Value 屬性值增加n,n 為整數。呼叫該方法之後,若Value 屬性大於Maximum 屬性的值,則Value 屬性值就是Maximum 值,若Value 屬性小於Minimum 屬性值,則Value 屬性值就是Minimum 值。
(2)PerformStep 方法:用來按step 屬性值來增加進度條的Value 屬性值,呼叫的一般格式如下:progressBar 物件.PerformStep();
該方法無引數。例如,下列程式段是一個顯示覆制多個檔案的進度的進度條使用方法。
Private void CopyWithProgress(string[]filenames)
{
pBar1.Visible=true;
pBar1.Minimum=1;
pBar1.Maximum=filenames.Length;
pBar1.Value=1;
pBar1.Step=1;
for(intx=1;x<=filenames.Length;x++)
{
if(CopyFile(filenames[x-1])==true)
{
pBar1.PerformStep();
}
}
}
ProgressBar 控制元件能響應很多事件,但一般很少使用。
2.TrackBar 控制元件
TrackBar 控制元件又稱滑塊控制元件、跟蹤條控制元件,它在工具箱中的圖示是“ ” 。該控制元件主要用於在大量資訊中進行瀏覽,或用於以可視形式調整數字設定。TrackBar 控制元件有兩部分:縮圖(也稱為滑塊)和刻度線。縮圖是可以調整的部分,其位置與Value 屬性相對應。刻度線是按規則間隔分隔的視覺化指示符。跟蹤條控制元件可以按指定的增量移動,並且可以水平或者垂直排列。
TrackBar 控制元件的常用屬性如下。
(1)Maximum 屬性:用來獲取或設定TrackBar 控制元件可表示的範圍上限,即最大值。
(2)Minimum 屬性:用來獲取或設定TrackBar 控制元件可表示的範圍下限,即最小值。
(3)Orientation 屬性:用來獲取或設定一個值,該值指示跟蹤條是在水平方向還是在垂直方向。
(4)LargeChange 屬性:用來獲取或設定一個值,該值指示當滑塊長距離移動時應為Value屬性中加上或減去的值。
(5)SmallChange 屬性:用來獲取或設定當滑塊短距離移動時對Value 屬性進行增減的值。
(6)Value 屬性:用來獲取或設定滑塊在跟蹤條控制元件上的當前位置的值。
(7)TickFrequency 屬性:用來獲取或設定一個值,該值指定控制元件上繪製的刻度之間的增量。
(8)TickStyle 屬性:用來獲取或設定一個值,該值指示如何顯示跟蹤條上的刻度線。TrackBar 控制元件的常用事件是ValueChanged,該事件在TrackBar 控制元件的Value 屬性值改變時發生。
16、HScrollBar 控制元件和VScrollBar 控制元件的使用
滾動條(ScrollBar)是大部分Windows 應用程式中都具有的控制元件,是Windows 介面的一種常見元素,通常分為水平滾動條(HscrollBar)和垂直滾動條(VscrollBar)。HScrollBar在工具箱中的圖示是,VScrollBar 控制元件在工具箱中的圖示是。這兩個控制元件主要用於在應用程式或控制元件中水平或垂直滾動,以方便在較長的列表中或大量資訊中轉移。
1、常用屬性:
(1)Minimum 和Maximum 屬性:與TrackBar 控制元件的同名屬性基本相同。
(2)Value 屬性:用於設定或返回滑塊在滾動條中所處的位置,其預設值為0。當滑塊的位置值為最小值時,滑塊移到水平滾動條的最左端位置,或移到垂直滾動條的頂端位置。當滑塊的位置值為最大值時,滑塊移到水平滾動條的最右端位置或垂直滾動條的底端位置。
(3)SmallChange 和LargeChange 屬性:這兩個屬性主要用於調整滑塊移動的距離。其中SmallChange 屬性用於控制當滑鼠單擊滾動條兩邊的箭頭時,滑塊滾動的值,即Value 屬性增加或減小的值。而LargeChange 屬性則控制當用滑鼠直接單擊滾動條時滑塊滾動的值。當用戶按下PageUp 鍵或PageDown 鍵或者在滑塊的任何一邊單擊滾動條軌跡時,Value 屬性將按照LargeChange 屬性中設定的值進行增加或減小。
2、常用事件:
(1)Scroll 事件:該事件在使用者通過滑鼠或鍵盤移動滑塊後發生。
(2)ValueChanged 事件:該事件在滾動條控制元件的Value 屬性值改變時發生。滾動條的使用方法與TrackBar 控制元件基本一致,此處不再贅述。
對話方塊類控制元件
17、OpenFileDialog 控制元件
OpenFileDialog 控制元件又稱開啟檔案對話方塊,主要用來彈出Windows 中標準的【開啟檔案】對話方塊。該控制元件在工具箱中的圖示為。
OpenFileDialog 控制元件的常用屬性如下。
(1)Title 屬性:用來獲取或設定對話方塊標題,預設值為空字串(”“)。如果標題為空字串,則系統將使用預設標題: “開啟” 。
(2)Filter 屬性:用來獲取或設定當前檔名篩選器字串,該字串決定對話方塊的【另存為檔案型別】或【檔案型別】框中出現的選擇內容。對於每個篩選選項,篩選器字串都包含篩選器說明、垂直線條(|)和篩選器模式。不同篩選選項的字串由垂直線條隔開,例如: “文字檔案(.txt)|
(3)FilterIndex 屬性:用來獲取或設定檔案對話方塊中當前選定篩選器的索引。第一個篩選器的索引為1,預設值為1。
(4)FileName 屬性:用來獲取在開啟檔案對話方塊中選定的檔名的字串。檔名既包含檔案路徑也包含副檔名。如果未選定檔案,該屬性將返回空字串(”“)。
(5)InitialDirectory 屬性:用來獲取或設定檔案對話方塊顯示的初始目錄,預設值為空字串(”“)。
(6)ShowReadOnly 屬性:用來獲取或設定一個值,該值指示對話方塊是否包含只讀複選框。如果對話方塊包含只讀複選框,則屬性值為true,否則屬性值為false。預設值為false。
(7)ReadOnlyChecked 屬性:用來獲取或設定一個值,該值指示是否選定只讀複選框。如果選中了只讀複選框,則屬性值為true,反之,屬性值為false。預設值為false。
(8)Multiselect 屬性:用來獲取或設定一個值,該值指示對話方塊是否允許選擇多個檔案。如果對話方塊允許同時選定多個檔案,則該屬性值為true,反之,屬性值為false。預設值為false。
(9)FileNames 屬性:用來獲取對話方塊中所有選定檔案的檔名。每個檔名都既包含檔案路徑又包含副檔名。如果未選定檔案,該方法將返回空陣列。
(10)RestoreDirectory 屬性:用來獲取或設定一個值,該值指示對話方塊在關閉前是否還原當前目錄。假設使用者在搜尋檔案的過程中更改了目錄,且該屬性值為true,那麼,對話方塊會將當前目錄還原為初始值,若該屬性值為false,則不還原成初始值。預設值為false。OpenFileDialog 控制元件的常用方法有兩個:OpenFile和ShowDialog 方法,本節只介紹ShowDialog 方法,該方法的作用是顯示通用對話方塊,其一般呼叫形式如下:
通用對話方塊物件名.ShowDialog();
通用對話方塊執行時,如果單擊對話方塊中的【確定】按鈕,則返回值為DialogResult.OK;否則返回值為DialogResult.Cancel。其他對話方塊控制元件均具有ShowDialog 方法,以後不再重複介紹。
18、SaveFileDialog 控制元件
SaveFileDialog 控制元件又稱儲存檔案對話方塊,主要用來彈出Windows 中標準的【儲存檔案】對話方塊。該控制元件在工具箱中的圖示為。
SaveFileDialog 控制元件也具有FileName、Filter、FilterIndex、InitialDirectory、Title 等屬性,這些屬性的作用與OpenFileDialog 對話方塊控制元件基本一致,此處不再贅述。
需注意的是:上述兩個對話方塊只返回要開啟或儲存的檔名,並沒有真正提供開啟或儲存檔案的功能,程式設計師必須自己編寫檔案開啟或儲存程式,才能真正實現檔案的開啟和儲存功能。
19、FontDialog 控制元件
FontDialog 控制元件又稱字型對話方塊,主要用來彈出Windows 中標準的【字型】對話方塊。該控制元件在工具箱中的圖示為。字型對話方塊的作用是顯示當前安裝在系統中的字型列表,供使用者進行選擇。下面介紹字型對話方塊的主要屬性。
(1)Font 屬性:該屬性是字型對話方塊的最重要屬性,通過它可以設定或獲取字型資訊。
(2)Color 屬性:用來設定或獲取字元的顏色。
(3)MaxSize 屬性:用來獲取或設定使用者可選擇的最大磅值。
(4)MinSize 屬性:用來獲取或設定使用者可選擇的最小磅值。
(5)ShowColor 屬性:用來獲取或設定一個值,該值指示對話方塊是否顯示顏色選擇框。如果對話方塊顯示顏色選擇框,屬性值為true,反之,屬性值為false。預設值為false。
(6)ShowEffects 屬性:用來獲取或設定一個值,該值指示對話方塊是否包含允許使用者指定刪除線、下劃線和文字顏色選項的控制元件。如果對話方塊包含設定刪除線、下劃線和文字顏色選項的控制元件,屬性值為true,反之,屬性值為false。預設值為true。
20、ColorDialog 控制元件
ColorDialog 控制元件又稱顏色對話方塊,主要用來彈出Windows 中標準的【顏色】對話方塊。該控制元件在工具箱中的圖示為。顏色對話方塊的作用是供使用者選擇一種顏色,並用Color 屬性記錄使用者選擇的顏色值。下面介紹顏色對話方塊的主要屬性。
(1)AllowFullOpen 屬性:用來獲取或設定一個值,該值指示使用者是否可以使用該對話方塊定義自定義顏色。如果允許使用者自定義顏色,屬性值為true,否則屬性值為false。預設值為true。
(2)FullOpen 屬性:用來獲取或設定一個值,該值指示用於建立自定義顏色的控制元件在對話方塊開啟時是否可見。值為true 時可見,值為false 時不可見。
(3)AnyColor 屬性:用來獲取或設定一個值,該值指示對話方塊是否顯示基本顏色集中可用的所有顏色。值為true 時,顯示所有顏色,否則不顯示所有顏色。
(4)Color 屬性:用來獲取或設定使用者選定的顏色。
21、PrintDialog 控制元件和PrintDocument 控制元件
PrintDialog 控制元件在工具箱中的圖示是,PrintDocument 控制元件在工具箱中的圖示是。使用PrintDialog 控制元件可以顯示Windows 標準的【列印】對話方塊,在該對話方塊中使用者可以選擇印表機、選擇要列印的頁及頁碼範圍等。需要注意的是:該對話方塊並不負責具體的列印任務,要想在應用程式中控制列印內容必須使用PrintDocument 控制元件。關於這兩個控制元件的詳細使用方法讀者可參閱相關資料或VisualC#的幫助檔案。
22、使用者自定義對話方塊
除了可以使用Windows 自帶的標準對話方塊外,使用者還可以把自己設計的窗體定義成對話方塊。使用自定義對話方塊有以下幾個要點。
(1)將窗體的FormBorderStyle 屬性值設定為FixedDialog。
(2)根據需要向窗體上新增控制元件。
(3)使用窗體的ShowDialog 方法顯示窗體,即顯示出對話方塊。
23、選單控制元件
Windows 的菜單系統是圖形使用者介面(GUI)的重要組成之一,在VisualC#中使用MainMenu 控制元件可以很方便地實現Windows 的選單,MainMenu 控制元件在工具箱中的圖示為。
1.選單的結構
圖10-9 和圖10-10 是典型的選單結構。其中有文字的單個命令稱選單項,頂層選單項是橫著排列的,單擊某個選單項後彈出的稱為選單或子選單,它們均包含若干個選單項,選單項其實是MenuItem類的一個物件。選單項有的是變灰顯示的,表示該選單項當前是被禁止使用的。有的選單項的提示文字中有帶下劃線的字母,該字母稱為熱鍵(或訪問鍵),若是頂層選單,可通過按“ALT+熱鍵”開啟該選單,若是某個子選單中的一個選項,則在開啟子選單後直接按熱鍵就會執行相應的選單命令。有的選單項後面有一個按鍵或組合鍵,稱快捷鍵,在不開啟選單的情況下按快捷鍵,將執行相應的命令。在圖10-9 中,【儲存檔案】選單項是加粗顯示的,該選單項稱為預設項。圖10-9 的【另存為】和【退出】之間有一個灰色的線條,該線條稱為分隔線或分隔符。在圖10-10 中選單項【白色背景】前面有一個“√”號,稱為選中標記,選單項加上選中標記表示該選單項代表的功能當前正在起作用。
2.選單項的常用屬性
(1)Text 屬性:用來獲取或設定一個值,通過該值指示選單項標題。當使用Text 屬性為選單項指定標題時,還可以在字元前加一個“&”號來指定熱鍵(訪問鍵,即加下劃線的字母)。例如,若要將“File”中的“F”指定為訪問鍵,應將選單項的標題指定為“&File” 。
(2)Checked 屬性:用來獲取或設定一個值,通過該值指示選中標記是否出現在選單項文字的旁邊。如果要放置選中標記在選單項文字的旁邊,屬性值為true,否則屬性值為false。預設值為false。
(3)DefaultItem 屬性:用來獲取或設定一個值,通過該值指示選單項是否為預設選單項。值為true 時,是預設選單項,值為false 時,不是預設選單項。選單的預設選單項以粗體的形式顯示。當用戶雙擊包含預設項的子選單後,預設項被選定,然後子選單關閉。
(4)Enabled 屬性:用來獲取或設定一個值,通過該值指示選單項是否可用。值為true 時表示可用,值為false 表示當前禁止使用。
(5)RadioCheck 屬性:用來獲取或設定一個值,通過該值指示選中的選單項的左邊是顯示單選按鈕還是選中標記。值為true 時將顯示單選按鈕標記,值為false 時顯示選中標記。
(6)Shortcut 屬性:用來獲取或設定一個值,該值指示與選單項相關聯的快捷鍵。
(7)ShowShortcut 屬性:用來獲取或設定一個值,該值指示與選單項關聯的快捷鍵是否在選單項標題的旁邊顯示。如果快捷組合鍵在選單項標題的旁邊顯示,該屬性值為true,如果不顯示快捷鍵,該屬性值為false。預設值為true。
(8)MdiList 屬性:用來獲取或設定一個值,通過該值指示是否用在關聯窗體內顯示的多文件介面(MDI)子視窗列表來填充選單項。若要在該選單項中顯示MDI 子視窗列表,則設定該屬性值為true,否則設定該屬性的值為false。預設值為false。
3.選單項的常用事件
選單項的常用事件主要有Click 事件,該事件在使用者單擊選單項時發生。
24、多窗體程式設計
Windows 應用程式很少只由一個窗體組成, 一般情況下一個應用程式均擁有很多個窗體。C#專案剛建立時只有一個名為Form1 的窗體,要建立多窗體應用程式應首先為專案新增窗體,新增窗體的方法如下。
單擊工具欄上的按鈕或執行【專案】→【新增Windows 窗體】命令,將會出現如圖10-17 所示的【新增新項】對話方塊。(2) 在該對話方塊的【模板】下面的列表框中選中【Windows 窗體】圖示,在【名稱】文字框中輸入窗體名,然後單擊【開啟】按鈕,即為應用程式添加了一個窗體。
25、MDI 應用程式設計
1、MDI 應用程式的概念
在前面的章節中,所建立的都是單文件介面(SDI)應用程式。這樣的程式(如記事本和畫圖程式)僅支援一次開啟一個視窗或文件。如果需要編輯多個文件,必須建立SDI 應用程式的多個例項。而使用多文件介面(MDI)程式(如Word 和AdobePhotoshop)時,使用者可以同時編輯多個文件。MDI程式中的應用程式視窗稱為父視窗,應用程式內部的視窗稱為子視窗。雖然MDI 應用程式可以具有多個子視窗, 但是每個子視窗卻只能有一個父視窗。此外,處於活動狀態的子視窗最大數目是1。子視窗本身不能再成為父視窗,而且不能移動到它們的父視窗區域之外。除此以外,子視窗的行為與任何其他視窗一樣(如可以關閉、最小化和調整大小等)。一個子視窗在功能上可能與父視窗的其他子視窗不同,例如,一個子視窗可能用於編輯影象,另一個子視窗可能用於編輯文字,第3 個子視窗可以使用圖形來顯示資料,但是所有的視窗都屬於相同的MDI 父視窗。圖10-19 是一個典型的MDI 應用程式。外面的視窗是應用程式視窗,裡面的兩個小視窗是MDI 子視窗。
2、與MDI 應用程式設計有關的屬性、方法和事件
常用的MDI 父窗體屬性如下:
(1)ActiveMdiChild 屬性:該屬性用來表示當前活動的MDI 子視窗,如果當前沒有子視窗,則返回null。
(2)IsMdiContainer 屬性:該屬性用來獲取或設定一個值,該值指示窗體是否為多文件介面(MDI)子窗體的容器,即MDI 父窗體。值為true 時,表示是父窗體,值為false 時,表示不是父窗體。
(3)MdiChildren 屬性:該屬性以窗體陣列形式返回MDI 子窗體,每個陣列元素對應一個MDI 子窗體。
常用的MDI 子窗體的屬性有:
(1)IsMdiChild 屬性:該屬性用來獲取一個值,該值指示該窗體是否為多文件介面(MDI)的子窗體。值為true 時,表示是子窗體,值為false 時,表示不是子窗體。
(2)MdiParent 屬性:該屬性用來指定該子窗體的MDI 父窗體。與MDI 應用程式設計有關的方法中,一般只使用父窗體的LayoutMdi 方法,該方法的呼叫格式如下:
MDI 父窗體名.LayoutMdi(Value);
該方法用來在MDI 父窗體中排列MDI 子窗體,以便導航和操作MDI 子窗體。引數Value 決定排列方式,取值有:MdiLayout.ArrangeIcons(所有MDI 子窗體以圖示的形式排列在MDI 父窗體的工作區內)、MdiLayout.TileHorizontal (所有MDI 子視窗均水平平鋪在MDI 父窗體的工作區內)、MdiLayout.TileVertical(所有MDI 子視窗均垂直平鋪在MDI 父窗體的工作區內)和MdiLayout.Cascade(所有MDI 子視窗均層疊在MDI 父窗體的工作區內)。常用的MDI 父窗體的事件是MdiChildActivate,當啟用或關閉一個MDI子窗體時將發生該事件。
3、選單合併
父窗體和子窗體可以使用不同的選單,這些選單會在選擇子窗體的時候合併。如果需要指定選單的合併方式,程式設計師可以設定每個選單項的MergeOrder 屬性和MergeType 屬性。
(1)MergeOrder 屬性:用來確定當兩個選單合併時選單項出現的順序,具有較低MergeOrder 的選單項會首先出現。
(2)MergeType 屬性:當合並的兩個選單的某些選單項的MergeOrder 屬性值相等時,使用該屬性可以控制這些選單項的顯示方式。其取值及含義如表10-4 所示。
26、鍵盤事件處理
鍵盤事件在使用者按下鍵盤上的鍵時發生,可分為兩類。第一類是KeyPress 事件,當按下的鍵表示的是一個ASCII 字元時就會觸發這類事件,可通過它的KeyPressEventArgs 型別引數的屬性KeyChar 來確定按下鍵的ASCII 碼。使用KeyPress 事件無法判斷是否按下了修改鍵(例如Shift,Alt 和Ctrl 鍵),為了判斷這些動作, 就要處理KeyUp 或KeyDown 事件, 這些事件組成了第二類鍵盤事件。該類事件有一個KeyEventArgs型別的引數,通過該引數可以測試是否按下了一些修改鍵、功能鍵等特殊按鍵資訊。
1.KeyPressEventArgs 類的主要屬性(KeyPress 事件的一個引數型別)
(1)Handled 屬性:用來獲取或設定一個值,該值指示是否處理過KeyPress 事件。
(2)KeyChar 屬性:用來獲取按下的鍵對應的字元,通常是該鍵的ASCII 碼。
2.KeyEventArgs 類的主要屬性(KeyUp 和KeyDown 事件的一個引數)
(1)Alt 屬性:用來獲取一個值,該值指示是否曾按下Alt 鍵。
(2)Control 屬性:用來獲取一個值,該值指示是否曾按下Ctrl 鍵。
(3)Shift 屬性:用來獲取一個值,該值指示是否曾按下Shift 鍵。
(4)Handled 屬性:用來獲取或設定一個值,該值指示是否處理過此事件。
(5)KeyCode 屬性:以Keys 列舉型值返回鍵盤鍵的鍵碼,該屬性不包含修改鍵(Alt、Control 和Shift 鍵)資訊,用於測試指定的鍵盤鍵。
(6)KeyData 屬性:以Keys 列舉型別值返回鍵盤鍵的鍵碼,幷包含修改鍵資訊,用於判斷關於按下鍵盤鍵的所有資訊。
(7)KeyValue 屬性:以整數形式返回鍵碼,而不是Keys 列舉型別值。用於獲得所按下鍵盤鍵的數字表示。
(8)Modifiers 屬性:以Keys 列舉型別值返回所有按下的修改鍵(Alt、Control 和Shift鍵),僅用於判斷修改鍵資訊。
27、滑鼠事件處理
對滑鼠操作的處理是應用程式的重要功能之一,在VisualC#中有一些與滑鼠操作相關的事件,利用它們可以方便地進行與滑鼠有關的程式設計。
(1)MouseEnter 事件:在滑鼠指標進入控制元件時發生。
(2)MouseMove 事件:在滑鼠指標移到控制元件上時發生。事件處理程式接收一個MouseEventArgs 型別的引數,該引數包含與此事件相關的資料。該引數的主要屬性及其含義如下。
Button 屬性:用來獲取曾按下的是哪個滑鼠按鈕。該屬性是MouseButtons 列舉型的值,取值及含義如下:Left(按下滑鼠左按鈕)、Middle(按下滑鼠中按鈕)、Right(滑鼠右按鈕)、None(沒有按下滑鼠按鈕)、XButton1 (按下了第一個XButton 按鈕, 僅用於Microsoft 智慧滑鼠瀏覽器) 和XButton2(按下了第二個XButton 按鈕,僅用於Microsoft 智慧滑鼠瀏
覽器)
Clicks 屬性:用來獲取按下並釋放滑鼠按鈕的次數。
Delta 屬性:用來獲取滑鼠輪已轉動的制動器數的有符號計數。制動器是滑鼠輪的一個凹口。
X 屬性:用來獲取滑鼠所在位置的x 座標。
Y 屬性:用來獲取滑鼠所在位置的y 座標。
(3)MouseHover 事件:當滑鼠指標懸停在控制元件上時將發生該事件。
(4)MouseDown 事件:當滑鼠指標位於控制元件上並按下滑鼠鍵時將發生該事件。事件處理程式也接收一個MouseEventArgs 型別的引數。
(5)MouseWheel 事件:在移動滑鼠輪並且控制元件有焦點時將發生該事件。該事件的事件處理程式接收一個MouseEventArgs 型別的引數
(6)MouseUp 事件:當滑鼠指標在控制元件上並釋放滑鼠鍵時將發生該事件。事件處理程式也接收一個MouseEventArgs 型別的引數。
(7)MouseLeave 事件:在滑鼠指標離開控制元件時將發生該事件。