C#窗體控件簡介ListBox

ListBox 控件
ListBox 控件又稱列表框,它顯示一個項目列表供用戶選擇。在列表框中,用戶

一次可以選擇一項,也可以選擇多項。


1、常用屬性:
(1) Items屬性: 用於存放列表框中的列表項,
是一個集合。通過該屬性,可以添加列表項、
移除列表項和獲得列表項的數目。
(2)MultiColumn 屬性:用來獲取或設置一
個值,該值指示ListBox是否支持多列。值
爲 true 時表示支持多列,值爲 false 時不支持
多列。當使用多列模式時,可以使控件得以顯
示更多可見項.
(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的屬性,該屬性用來設置或獲取組合框的樣式,組合框的各種樣式, 左邊的組合框能夠通過文本框輸入文本, 中間的組合框則不能輸入文本,
只能選擇列表項。


12、CheckedListBox 控件
CheckedListBox控件又稱複選列表框,它擴展了ListBox控件,它幾乎
能完成列表框可以完成的所有任務,並且還可以在列表項旁邊顯示覆
選標記。兩種控件間的其他差異在於,複選列表框只支持DrawMode.Normal,並且複選列表框只能有一項選定或沒有任何選定。此處需要注意一點:選定的項是指
窗體上突出顯示的項,已選中的項是指左邊的複選框被選中的項。複選列表框的樣式如圖9-23所示。
除具有列表框的全部屬性外,它還具有以下屬性。
(1)CheckOnClick屬性:獲取或設置一個值,該值指示當某項被選定時
是否應切換左側的複選框。如果立即切換選中標記,則該屬性值爲true;
否則爲false。默認值爲false。
(2)CheckedItems 屬性:該屬性是複選列表框中選中項的集合,只代表
處於CheckState. Checked或CheckState.Indeterminate狀態的那些項。 該集
閤中的索引按升序排列。
(3)CheckedIndices 屬性:該屬性代表選中項(處於選中狀態或中間狀
態的那些項)索引的集合。
PictureBox控件的使用
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 屬性:用來獲取或設置一個值,該值指示如何顯示跟蹤條上的刻度線。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屬性:用來獲取或設置用戶可選擇的最小磅值。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#的幫助文件。


6.用戶自定義對話框
除了可以使用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屬性.

(1)MergeOrder屬性:用來確定當兩個菜單合併時菜單項出現的順序,具有較低
MergeOrder的菜單項會首先出現。
(2)MergeType屬性:當合並的兩個菜單的某些菜單項的MergeOrder屬性值相等時,
使用該屬性可以控制這些菜單項的顯示方式。

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事件:在鼠標指針離開控件時將發生該事件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章