標籤:
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 屬性:用來擷取在開啟檔案對話方塊中選定的檔案名稱的字串。檔案名稱既包含檔案路徑也包
含副檔名。如果未選定檔案,該屬性將返回Null 字元串("")。
(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事件:在滑鼠指標離開控制項時將發生該事件。
C#表單控制項簡介ListBox