天天看點

WinForm控件屬性大全

C#控件及常用設計整

1、窗體... 1

2、Label 控件... 3

3、TextBox 控件... 4

4、RichTextBox控件... 5

5、NumericUpDown 控件... 7

6、Button 控件... 7

7、GroupBox 控件... 7

8、RadioButton控件... 8

9、CheckBox 控件... 8

10、ListBox 控件... 9

11、ComboBox 控件... 10

12、CheckedListBox 控件... 10

13、PictureBox 控件的使用... 11

14、Timer 控件... 11

15、ProgressBar控件和 TrackBar控件... 12

16、HScrollBar 控件和 VScrollBar控件的使用... 13

17、OpenFileDialog 控件... 13

18、SaveFileDialog 控件... 14

19、FontDialog 控件... 14

20、ColorDialog控件... 14

21、PrintDialog控件和 PrintDocument 控件... 15

22、使用者自定義對話框... 15

23、菜單控件... 15

25、MDI 應用程式設計... 16

26、鍵盤事件處理... 17

27、滑鼠事件處理... 18

28、排列窗體上的控件... 18

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編碼格式的檔案。

上面介紹的 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)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)Checked屬性:用來設定或傳回單選按鈕是否被選中,選中時值為true,沒有選中時值為false。

(2)AutoCheck 屬性:如果 AutoCheck 屬性被設定為 true(預設),那麼當選擇該單選按鈕時,将自動清除該組中所有其他單選按鈕。對一般使用者來說,不需改變該屬性,采用預設值(true)即可。

(3)Appearance 屬性:用來擷取或設定單選按鈕控件的外觀。當其取值為 Appearance.Button 時,将使單選按鈕的外觀像指令按鈕一樣:當選定它時,它看似已被按下。當取值為 Appearance.Normal 時,就是預設的單選按鈕的外觀。

(4)Text屬性:用來設定或傳回單選按鈕控件内顯示的文本,該屬性也可以包含通路鍵,即前面帶有“&”

符号的字母,這樣使用者就可以通過同時按Alt鍵和通路鍵來選中控件。

(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) 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屬性:該屬性用來傳回清單項的數目。

(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)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)Enabled 屬性:用來設定定時器是否正在運作。值為 true 時,定時器正在運作,值為 false 時,定時器不在運作。

(2)Interval屬性:用來設定定時器兩次Tick事件發生的時間間隔,以毫秒為機關。如它的值設定為500,則将每隔0.5秒發生一個Tick事件。

(1)Start方法:用來啟動定時器。調用的一般格式如下:

Timer控件名.start(); 該方法無參數。

(2)Stop方法:用來停止定時器。調用的一般格式如下:

Timer控件名.stop(); 該方法無參數。

定義器控件響應的事件隻有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)Minimum和 Maximum屬性:與TrackBar控件的同名屬性基本相同。

(2)Value屬性:用于設定或傳回滑塊在滾動條中所處的位置,其預設值為0。當滑塊的位置值為最小值時,滑塊移到水準滾動條的最左端位置,或移到垂直滾動條的頂端位置。當滑塊的位置值為最大值時,滑塊移到水準滾動條的最右端位置或垂直滾動條的底端位置。

(3)SmallChange和LargeChange屬性:這兩個屬性主要用于調整滑塊移動的距離。其

中 SmallChange屬性用于控制當滑鼠單擊滾動條兩邊的箭頭時,滑塊滾動的值,即 Value屬性增加或減小的值。而LargeChange屬性則控制當用滑鼠直接單擊滾動條時滑塊滾動的值。當使用者按下PageUp鍵或PageDown鍵或者在滑塊的任何一邊單擊滾動條軌迹時,Value屬性将按照 LargeChange屬性中設定的值進行增加或減小。

(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、使用者自定義對話框

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 事件:當滑鼠指針在控件上并釋放滑鼠鍵時将發生該事件。事件處理程式也接收一個

(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等格式的圖檔或這圖示圖檔框的主要屬性

方法

圖檔框顯示的圖檔

SizeMode

指定如何處理圖檔的位置和控件的大小

圖像清單框(ImageList):

用于儲存Windows窗體其他控件使用的圖像圖像清單框的主要屬性

Images

儲存在圖像清單中的所有圖像

ImageSize

圖像清單中圖像的大小

TransparentColor

被視為透明的顔色

Image中存放的圖像就像存放在數組中一樣,每個圖像都有一個索引值,從0開始,使用Image[索引值],可以定位到一個圖像

繼續閱讀