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 所示。
12、CheckedListBox(復選列表框) 控件
CheckedListBox 控件又稱復選列表框,它擴展了ListBox 控件,它幾乎能完成列表框可以完成的所有任務,並且還可以在列表項旁邊顯示復選標記。兩種控件間的其他差異在於,復選列表框只支持DrawMode.Normal,並且復選列表框只能有一項選定或沒有任何選定。此處需要注意一點:
選定的項是指窗體上突出顯示的項,已選中的項是指左邊的復選框被選中的項。除具有列表框的全部屬性外,它還具有以下屬性。
(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)|*.txt|所有文件(*.*)|*.*” 。還可以通過用分號來分隔各種文件類型,可以將多個篩選器模式添加到篩選器中,例如: “圖像文件(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG; *.GIF|所有文件(*.*)|*.*” 。
(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.菜單的結構
略
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 事件,該事件在用戶單擊菜單項時發生。
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 事件:在鼠標指針離開控件時將發生該事件。