C#控制元件及常用設計整
15、ProgressBar控制元件和 TrackBar控制元件 12
16、HScrollBar 控制元件和 VScrollBar控制元件的使用 13
21、PrintDialog控制元件和 PrintDocument 控制元件 15
1、窗體
1、 常用屬性
(1)Name屬性:用來獲取或設定窗體的名稱,在應用程式中可通過Name屬性來引用窗體。
(2) WindowState屬性: 用來獲取或設定窗體的視窗狀態。 取值有三種: Normal (窗體正常顯示)、 Minimized
(窗體以最小化形式顯示)和 Maximized(窗體以最大化形式顯示)。
(3)StartPosition屬性:用來獲取或設定執行時窗體的起始位置。其取值及含義如表9-1 所示。預設的起
始位置是WindowsDefaultLocation。
(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 屬性:用來獲取或設定一個值,該值指示控制元件是否可以對使用者互動作出響應。如果控制元件可- 3 -
以對使用者互動作出響應,則為 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事件:該事件在使用者單擊窗體時發生。 - 4 -
(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 為三維邊框。邊框效果如圖 9-8 所示。
(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()該方法無引數。 - 6 -
(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、常用方法 - 7 -
前面介紹的 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(檔名); - 8 –
[功能]:將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 時的閃爍現象。一個例
子程式如下:
publicvoidAddToMyListBox()
{
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控制元件,它幾乎能完成列表框可以完成的所有任務,並且還可以在列表項旁邊顯示覆選標記。兩種控制元件間的其他差異在於,複選列表框只支援- 13 -
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屬性:用來決定影象的顯示模式。其取值有四種情況,取值及含義如表9-11所示。各種模式下的圖片顯示樣式如圖9-24所示。
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(); 該方法無引數。例如,下列程式段是一個顯示覆制多個檔案的進度的進度條使用方法。
privatevoidCopyWithProgress(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 屬性:用來獲取或設定一個值,該值指示如何顯示跟蹤條上的刻度線。該屬性的取值及含義如表9-12 所示。
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)|*.txt|所有檔案(*.*)|*.*" 。還可以通過用分號來分隔各種檔案型別,可以將多個篩選器模式新增到篩選器中,例如: "影象檔案(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG; *.GIF|所有檔案(*.*)|*.*" 。
(3)FilterIndex屬性:用來獲取或設定檔案對話方塊中當前選定篩選器的索引。第一個篩選器的索引為1,預設值為1。
(4)FileName 屬性:用來獲取在開啟檔案對話方塊中選定的檔名的字串。檔名既包含檔案路徑也包含副檔名。如果未選定檔案,該屬性將返回空字串("")。
(5)InitialDirectory屬性:用來獲取或設定檔案對話方塊顯示的初始目錄,預設值為空字串("")。 - 17 -
(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屬性:用來獲取或設定使用者可選擇的最小磅值。192VisualC#.NET應用教程
(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#的幫助檔案。
使用者自定義對話方塊
除了可以使用Windows自帶的標準對話方塊外,使用者還可以把自己設計的窗體定義成對話方塊。使用自定義對話方塊有以下幾個要點。
(1)將窗體的FormBorderStyle屬性值設定為FixedDialog。
(2)根據需要向窗體上新增控制元件。
(3)使用窗體的ShowDialog方法顯示窗體,即顯示出對話方塊。
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的窗體,要建立多窗體應用程式應首先為專案新增窗
體,新增窗體的方法如下。
(1) 單擊工具欄上的按鈕 或執行【專案】→【新增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屬性。 - 21 -
(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事件:在滑鼠指標離開控制元件時將發生該事件。 - 23 –
28、排列窗體上的控制元件
對齊窗體對齊的步驟:
1.選擇要對齊的控制元件
2.在VS選單中,選擇"格式"→"對齊"選項,單擊想要的對齊方式
注:你選擇的第一個控制元件是主控制元件,其他的控制元件都與他對齊。
使用Anchor
Anchor是錨定的意思,它的作用就是設定控制元件相對於窗體的某個邊緣的距離保持不變,也就是說與窗體一起動態調整控制元件的大小,這是每個控制元件都有的屬性。
使用步驟:
1.選擇要錨定的控制元件2.在"屬性"視窗中,單擊Anchor屬性右邊的箭頭,顯示編輯器
3.在顯示的十字行上選擇或清除控制元件錨定的邊4.單擊Anchor屬性名,關閉編輯器
使用Dock
Dock是讓控制元件始終保持在窗體的邊緣,或者填充窗體
使用步驟:
- 選擇要停靠的控制元件在"屬性"視窗中,單擊Dock屬性的右側箭頭,顯示編輯器
- 設定停靠方式建立多文件介面應用程式(MDI)
什麼是MDI
要在一個視窗中開啟多個檔案,就要使用MDI(多文件介面)應用程式
MDI主要由兩種視窗組成:父視窗和子視窗
MDI的幾個顯著的特點:
- 啟動一個MDI應用程式時,首先顯示父窗體
- 它是應用程式中所有其他視窗的容器
- 每個應用程式介面都只能有一個MDI父窗體
- 在任何指定的時間都可以開啟多個子窗體
- 任何MDI子窗體都不能移出MDI框架區域
- 關閉MDI父窗體則自動關閉所有開啟的MDI子窗體
如何建立MDI
建立MDI步驟:
- 設定父窗體:將父窗體的IsMDICContainer屬性設定為True
- 設定子窗體:在呼叫開啟子窗體的Show()方法前,在程式碼中將子窗體的MdiParents屬性設定為this
為父窗體新增子窗體列表
- 在父窗體中新增一個選單
- 新增一個"視窗"選單項
- 將選單控制元件的MdiWindowListItem屬性設為"視窗"選單項
使用WinForms高階控制元件
工具條(ToolStrip):
使用工具條可以建立功能非常強大的工具欄,工具條控制元件可以包含按鈕、標籤、下拉按鈕、文字框、組合框等,可以顯示文字、圖片或文字加圖片。
狀態條(StatusStrip):狀態條常常放在窗體的底部,用來顯示一些基本資訊。在狀態條控制元件中可以包含標籤、下拉按鈕等,常常和工具條、選單欄等配合使用。工具條和狀態條的主要屬性和事件
屬性 | 說明 |
ImageScalingSize | 工具條或狀態條中的項顯示的影象的大小 |
Items | 在工具條或狀態條上顯示的項的集合 |
DisplayStyle | 設定影象和文字的顯示方式,包括顯示文字、顯示影象、顯示文字和影象或什麼都不顯示 |
Text | 按鈕\標籤上顯示的文字 |
Image | 按鈕/標籤上顯示的圖片 |
事件 | 說明 |
Click | 單擊按鈕/標籤時,觸發該事件 |
選項卡(TabControl):
這個控制元件可以顯示多個選項卡頁,選項卡中可以包含圖片和其他控制元件選項卡的主要屬性
屬性 | 說明 |
MultiLine | 是否可以顯示多行選項卡 |
TabPages | 包含的選項卡頁的集合 |
SelectedIndex | 當前所選選項卡頁的索引值 |
圖片框(PictureBox):
用於顯示點陣圖、DIF、JEPG等格式的圖片或這圖示圖片框的主要屬性
屬性 | 方法 |
Image | 圖片框顯示的圖片 |
SizeMode | 指定如何處理圖片的位置和控制元件的大小 |
影象列表框(ImageList):
用於儲存Windows窗體其他控制元件使用的影象影象列表框的主要屬性
屬性 | 方法 |
Images | 儲存在影象列表中的所有影象 |
ImageSize | 影象列表中影象的大小 |
TransparentColor | 被視為透明的顏色 |
Image中存放的影象就像存放在陣列中一樣,每個影象都有一個索引值,從0開始,使用Image[索引值],可以定位到一個影象