文章目錄
- 6.1 常用控制元件
- 6.1.1 單選按鈕(RadioButton)
- 6.1.2 復選框(CheckBox)
- 6.1.3 框架
- 1. 面板控制元件Panel
- 2. 分組框GroupBox
- 3. TabControl控制元件
- 6.1.4 應用實體
- 6. 2 串列框和組合框
- 6.2.1 串列框(ListBox)
- 6.2.2 組合框(ComboBox )
- 6.2.3 應用實體
- 6.3 用戶互動界面
- 6.3.1 滾動條和進度條
- 6.3.2 定時器
- 6.3.3 選單設計
- 選單設計概述
- MenuStrip和ContextMenuStrip
- 選單項ToolStripMenuItem
- 彈出選單ContextMenuStrip
- 6.3.4 滑鼠事件
- 6.3.5 對話框設計
- 訊息框
- 通用對話框
- 打開檔案和保存檔案
- 顏色對話框(ColorDialog)
- 字體對話框(FontDialog)
- 列印組件
- 列印設定對話框
- 列印預覽對話框
- 列印對話框(PrintDialog)
- 6.3.6 應用實體
- 本章小結
6.1 常用控制元件
System.Windows.Forms命名空間中的控制元件
| 序號 | 控制元件 | 用途 |
|---|---|---|
| 1 | Button | 按鈕 |
| 2 | CheckBox | 復選框 |
| 3 | CheckListBox | 復選框串列 |
| 4 | ComboBox | 組合框 |
| 5 | DataGridview | 顯示一個串列 |
| 6 | DateTimePicker | 選擇時間和日期 |
| 7 | GroupBox | 分組框 |
| 8 | HScrollBar | 水平滾動條 |
| 9 | Label | 標簽 |
| 10 | LinkLabel | 超鏈接標簽 |
| 11 | ListBox | 串列框 |
| 12 | ListView | 串列 |
| 13 | MonthCalendar | 月歷控制元件 |
| 14 | NumericUpDown | 微調按鈕,用于調節數字 |
| 15 | PrctureBox | 影像控制元件 |
| 16 | PrintPreviewControl | 列印預覽控制元件 |
| 17 | ProgressBar | 進度條 |
| 18 | PropertyGrid | 列出其他物件的屬性的控制元件 |
| 19 | RadioButton | 單選按鈕 |
| 20 | RichTextBox | 富文本框控制元件 |
| 21 | StatusBar | 狀態欄 |
| 22 | TabControl | 包含Tab選項卡的控制元件 |
| 23 | TextBox | 文本框 |
| 24 | ToolBar | 工具列 |
| 25 | ToolTip | 工具提示 |
| 26 | TrackBar | 跟蹤條 |
| 27 | TreeView | 樹視圖 |
| 28 | VScrollBar | 垂直滾動條 |
6.1.1 單選按鈕(RadioButton)

單選按鈕控制元件是一個能開能關的控制元件,通常由兩個以上的單選按鈕組成選項組,但這些單選按鈕在同一時刻只能選一個,
重要屬性:
| 序號 | 屬性 | 描述 |
|---|---|---|
| 1 | Text | 按鈕上顯示的文本 |
| 2 | Checked | 表示單選按鈕的狀態(True —— 被選定;False —— 未被選定) |
重要事件:
| 序號 | 事件 | 描述 |
|---|---|---|
| 1 | Click | 單擊后,使Checked屬性為True |
| 2 | CheckedChanged | 當某個單選按鈕的狀態被發生變化,該事件隨之被觸發 |
6.1.2 復選框(CheckBox)
重要屬性:
| 序號 | 屬性 | 描述 |
|---|---|---|
| 1 | CheckState | 表示復選框狀態 |
| 2 | Unchecked | 未選定 |
| 3 | Checked | 被選定 |
| 4 | Indeterminate | 不確定 |
重要事件:
| 序號 | 事件 | 描述 |
|---|---|---|
| 1 | Click | 單擊事件 |
| 2 | CheckedChanged | 選中狀態改變事件 |
6.1.3 框架
包括面板控制元件(Panel)、分組控制元件(GroupBox)和多頁面控制元件(TabControl),先建立框架,然后將各控制元件放置其中,
1. 面板控制元件Panel
面板可以回應Click和DoubleClick事件,但一般不需要撰寫事件程序,
2. 分組框GroupBox
分組控制元件把其他的控制元件組織在一起形成控制元件組,當框架移動時,控制元件可以相應地移動;框架隱藏時,控制元件也一起隱藏,
重要屬性:
| 序號 | 屬性 | 描述 |
|---|---|---|
| 1 | Text | 給分組框加一個標題,使用戶了解分組框的用途 |
3. TabControl控制元件
TabControl控制元件很像一個卡片盒或一組檔案標簽,將一些相關內容組織在一個選項卡中,在同一個視窗區域通過選擇標簽轉換顯示不同的選項卡,
TabControl可以回應Click和DoubleClick事件,但該控制元件只是用來做界面的切換,很少對它們的事件進行處理 ,
6.1.4 應用實體
【例6-1】撰寫計算機選課程式
課程有三個等級,第一門課是基礎課,第二門課是語言課,都為限選,第三門應用課是任選課,學生每選一門課,學生的選課情況立即顯示在下面的多行文本框中,

6. 2 串列框和組合框
6.2.1 串列框(ListBox)
串列框可顯示多個選項供用戶選擇,不能直接修改其中的內容,如果選項的數量超過可顯示的區域,串列框會自動地增加滾動條,

ListBox控制元件常用的屬性
(1) Items
Items是一個集合,是ArrayList類物件 ,

Items中選項的序號是從0開始的,
Items屬性既可以在設計狀態設定,也可以在程式中設定,
(2) SelectionMode
設定用戶是否能夠在串列項中做多個選擇
None:不允許選擇;
One:只能單選而不允許有多項選擇;
MultiSimple:允許有簡單的多項選擇;
MultiExtended:允許有擴展式多項選項,即用戶使用“Shif+單擊”或“Shift+方向鍵”,可以將先前的選項擴展到當前選項,使用“Ctrl+單擊” 可以進行各項選擇,
(3) SelectedIndex
表示在程式運行時被選定的項的序號,只能在程式中設定或參考,

如果未選中任何選項,則SelectedIndex為-1,
(4) SelectedItem
串列中選中的字串,如允許多選,該屬性回傳選擇的索引號最小的條目,如一個也沒選,該值為空,
(5) SelectedItems
獲取包含 ListBox 中當前選定項的集合,
(6) MultiColumn
ListBox是否支持多列,如果設定為True,則串列框支持多列顯示,默認為False,
(7) Sorted
程式運行期間串列框或組合框的選項是否按字母表順序排序,如果Sorted為True,則選項按字母表順序顯示
ListBox控制元件常用的方法
(1) Items.Add
物件.Items.Add(選項):把一個選項加入串列框
例如:ListBox1.Items.Add(“王濤")
(2) Items.Remove
物件. Items.Remove (選項):從串列框中洗掉指定的項
例如:ListBox1.Items.Remove (“李明")
(3)Items.Insert
物件.Insert(Index,Item):在串列框中插入指定的項,Index表示在串列框中插入的位置,
例如:ListBox1.Insert(4,”趙明”)
(4) Items.Clear
物件.Items.Clear:用于清除串列框的所有專案
例如:ListBox1.Items.Clear
6.2.2 組合框(ComboBox )
組合框是文本框和串列框組合而成的控制元件,可以在文本框輸入字符,其右側有一個向下的箭頭,單擊此箭頭可以打開一個串列框,可以從串列框中選擇希望輸入的內容,它有三種不同型別:

ComboBox控制元件常用的屬性
? Items:同串列框
? Sorted:同串列框
? SelectedItem:同串列框
? SelectedIndex:同串列框
? MaxDropDownItems:下拉串列能顯示的最大條目數(1~100),如果實際條目數大于此數,將出現滾動條,
ComboBox控制元件常用的事件
Click、DoubleClick
SelectedIndexChanged:在 SelectedIndex 屬性更改后發生
6.2.3 應用實體
【例6-2】撰寫選課程式,
利用串列框和組合框增加和洗掉相關課程,并統計學時數,

6.3 用戶互動界面
用戶界面的作用是負責管理與用戶之間的互動,向用戶顯示資料,從用戶處獲得資料,解釋由用戶操作所引發的事件,并幫助用戶查看任務的進度,
6.3.1 滾動條和進度條
滾動條(ScrollBar)通常附在表單上協助觀察資料或確定位置,也可作為資料輸入工具,滾動條有水平(HScrollBar)和垂直(VScrollBar)兩種,
進度條(ProgressBar)用來指示事務處理的進度,

滾動條的主要屬性
(1)Value屬性:Value值的大小決定了滾動條中滑塊的位置,反過來滑塊的位置也影響值的大小,
在程式中使用該屬性的語法如下:
Object.value[=number]
(2)Minimum(最小值)屬性:將滑塊移到滾動條的最左端或最上端時,滾動條的屬性值達到最小,默認值為0,
(3)Maxinum(最大值)屬性:將滑塊移到滾動條的最右端或最下端時,滾動條的屬性值達到最大,默認值為100,
(4) Smallchange(小變化)屬性:當用滑鼠在滾動條端點的某一箭頭上單擊時,屬性值就相應地增加或減少,屬性的設定值是用戶每單擊一次滑鼠,屬性增加或減少的量,
(5)Largechange(大變化)屬性:當用滑鼠在滾動條端點與滑塊之間的任一位置單擊時,屬性值就相應地大幅增加或減少,屬性的設定值是用戶每單擊一次滑鼠,屬性增加或減少的量,
滾動條的事件
(1)ValueChanged事件當通過 Scroll 事件或以編程方式更改Value屬性時發生,
(2)Scroll事件在通過滑鼠或鍵盤操作移動滾動框后發生,
進度條

ProgressBar(進度條)控制元件使用矩形方塊從左至右顯示某一程序的行程情況,
屬性:
(1)Maximum/Minimum:讀取或設定進度條的最大/小計數值,
(2)Value用于讀取或設定進度條的當前計數值,
在對ProgressBar編程時,必須先確定Value屬性上限,例如,下載檔案,可將Maximum設定為檔案長度,在該檔案下載程序中,將Value屬性設定為檔案已經下載的位元組數,
進度條的常用事件
Click、MouseDown和MouseMove
【例6-3】滾動條和進度條應用,
用水平滾動條來設定參與運算的序列的長度,用進度條顯示不同長度序列的處理進度不同

6.3.2 定時器
定時器以一定的時間間隔產生Tick事件,
屬性:
Enabled:為False時定時器不產生Tick事件
Interval:觸發Tick事件的間隔,單位ms
事件:
定時器控制元件只有一個Tick事件
產生Tick事件條件:
Enabled=True; Interval>0
方法:
Start、Stop
【例6-4】實時時鐘,

6.3.3 選單設計
選單設計概述
選單有下拉式選單和彈出選單(背景關系選單),下拉式選單的組成結構:

選單設計概述
VS2008 .NET的選單類包括:
MenuStrip,ToolStrip,ContextMenuStrip,StatusStrip四種控制元件,
MenuStrip為選單條,ToolStrip為工具條,
ContextMenuStrip是快捷選單,StatusStrip是狀態條
MenuStrip和ContextMenuStrip
MenuStrip控制元件的圖示:

ContextMenuStrip控制元件的圖示,

熱鍵:當按住ALT鍵后,再按頂級選單項的熱鍵字符,可以打開該頂級選單項的彈出選單,如 “編輯(E)”
快捷鍵 :用戶可以不打開主選單,只要按住Ctrl鍵不放,再按快捷鍵字符
MenuStrip的常見屬性

AllowItemReorder:默認值為False,當更改該屬性值為True時,按下ALT鍵的同時可以用滑鼠拖動各選單項以調整其在選單欄上的左右位置,
Dock屬性:指示選單欄在表單中出現的位置,默認值為Top,
GripStyle屬性::是否顯示選單欄的指示符,即縱向排列的多個凹點,默認值為Hidden,當更改該屬性值為Visible時,顯示位置由GripMargin屬性指定,
Items:用于編輯選單欄上顯示的各選單項,單擊Items屬性后“…”按鈕,彈出“項集合編輯器”對話框 ,
ShowItemToolTips :是否顯示MenuStrip的工具提示,
Stretch:指示只是MenuStrip是否在其容器中從一端拉伸到另一端,
MenuStrip的常用事件
ItemClicked:當單擊選單欄上各主選單項時觸發的操作,
LayoutCompleted:當選單欄上各主選單項的排列順序發生變化之后觸發的操作,使用該事件時,AllowItemReorder屬性必須設為True,即當程式運行時,按下Alt鍵重新排列選單欄上各主選單項的順序之后觸發該事件,
選單項ToolStripMenuItem
屬性:
Name:選單項的名字,
Checked:指示選單項是否被選中,默認值為False,
CheckOnClick:決定單擊選單項時是否使其選中狀態發生改變,默認值為false,即單擊選單項不會影響其Checked屬性,
CheckState:指示選單項的狀態,與復選框CheckBox控制元件的CheckState屬性相同,共有3個屬性值:Checked,Unchecked和Indeterminate,
DisplayStyle:指示選單項上的顯示內容,共有4個屬性值:None,Text,Image和ImageAndText,默認值為ImageAndText,
DropDownItems:單擊該屬性后的“…”按鈕,調出“項集合編輯器”對話框,以此編輯該選單項對應的子選單中的各選單項,
Image:指定在該選單項上顯示的圖示,
ImageScaling:指定是否調整圖示大小,默認屬性值為SizeToFit,即調整圖示大小以適應選單項,該屬性的另一個屬性值為None,即不調整圖示大小,
ShortCutKeys:為選單項指定快捷鍵,單擊該屬性后的下拉按鈕,出現設定頁面,用于設定選單項的快捷組合鍵,該屬性的默認值為None,

ShowShortCutKeys:指示是否在選單項上顯示快捷鍵,默認值為True,即在選單項上按照ShortCutKeys屬性的設定顯示快捷鍵,
Text屬性:指示選單項標題,
ToolTipText屬性:控制元件的ToolTip文本,
事件:
Click事件:單擊選單項時觸發,
DropDownClosed:關閉選單項的子選單時觸發的操作,
DropDownItemClicked:單擊選單項的子選單中任何一項時觸發的操作,
DropDownOpened:選單項的子選單打開之后觸發的操作,
DropDownOpening:打開選單項的子選單時觸發的操作,
彈出選單ContextMenuStrip
屬性:
AllowTransparency:是否能調整表單的不透明度,
AutoClose:是否能在不激活時自動關閉,
AutoSize:是否能自動調整大小,
DefaultDropDownDirection:控制元件的顯示方向,
DisplayRectangle:獲取顯示區域的矩形,
DropShadwnEnabled:是否顯示三維陰影的值,
Items:獲取ToolStrip的所有子項,
LayoutStyle:是否子項的顯示方式,
Opacity:確定表單的不透明度,
OwnerItem:為此 ToolStripDropDown 所有者的 ToolStripItem,
Region:與 ToolStripDropDown 關聯的視窗區域,
ShowCheckMargin:是否在 ToolStripMenuItem 的左邊緣顯示選中標記的位置,
ShowImageMargin:是否在 ToolStripMenuItem 的左邊緣顯示影像的位置,
SourceControl:獲取上一個使此 ContextMenuStrip 被顯示的控制元件,
TextDirection:指定項上的文本繪制方向,
創建主選單
【例6-5】文本編輯器,

創建彈出選單
主選單通過表單的MainMenuStrip屬性設定其主選單,
彈出選單可以通過表單中物件的ContextMenuStrip屬性設定某個彈出選單系結到此物件,
給文本框tbContent系結彈出選單:
tbContent.ContextMenuStrip = ContextMenuStrip1;
6.3.4 滑鼠事件
MouseDown:如果滑鼠位于控制元件區域,按下滑鼠按鍵,
MouseUp:如果滑鼠位于控制元件區域,抬起滑鼠按鍵,
MouseMove:如果滑鼠在控制元件區域移動,
MouseEnter:滑鼠進入控制元件區域,
MouseLeave:滑鼠離開控制元件區域,
滑鼠事件處理函式一般有兩個引數:
object sender:產生該事件的物件的屬性Name的值,例如,為Form1的MouseDown事件增加事件函式,單擊Form1,第一個引數sender代表Form1物件,
System.Windows.Forms.MouseEventArgs e:代表事件的一些資訊,事件不同,所代表的資訊也不相同,滑鼠按下事件處理函式中,e.X為發生事件時滑鼠位置的x坐標,e.Y為發生事件時滑鼠位置的y坐標,e.Button為MouseButtons.Left,表示單擊了滑鼠左鍵等等,Right和Middle則分別代表右鍵和中間鍵,e.Clicks為滑鼠單擊的次數,如果大于2次,則為雙擊,
滑鼠事件應用
【例6-6】在表單中的指定區域,單擊或雙擊滑鼠左鍵或右鍵,用Label控制元件顯示滑鼠的事件和位置,

6.3.5 對話框設計
在圖形用戶界面中,對話框是一種特殊的表單,向用戶顯示資訊,獲得用戶的回應 ,
在C#.NET中,對話框根據其用途可以分為訊息框、通用對話框和列印組件三大類,
訊息框
C#中通過MessageBox類實作訊息框的定義,
MessageBox.Show(“歡迎!”);
MessageBox.Show("大家晚上好!","問候");
MessageBox.Show("是否繼續?","警告", MessageBox Buttons.YesNoCancel);

C#中通過MessageBox類實作訊息框的定義,
MessageBox.Show("程式發生錯誤!","警告", MessageBoxButtons. RetryCancel, MessageBoxIcon.Warning);
MessageBox.Show("程式發生錯誤!","警告", MessageBoxButtons. RetryCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton. Button2);

通用對話框
利用通用對話框類控制元件可在表單上創建打開檔案、保存檔案、顏色、字體、列印設定、列印預覽等對話框,

通用對話框控制元件繼承了System.Windows.Forms. CommonDialog類,.NET Framewrek中提供了多個常用的對話框控制元件和對應的類,
打開檔案和保存檔案
屬性:
Filter:字串型別,選擇在對話框中顯示的檔案型別,
Filter="純文本檔案(.txt)|.txt|所有檔案(.)|.”
FilterIndex:表示打開對話框后,對話框的檔案型別(T)下拉串列編輯框的下拉串列中首先被選中的項的索引號,
可以在設計階段在屬性視窗修改屬性FilterIndex和Filter,也可在程式中用下列陳述句修改:
openFileDialog1.Filter="純文本檔案(*.txt)|*.txt|所有檔案(*.*)|*.*"
openFileDialog1.FilterIndex=1
| 序號 | 屬性 | 用途 |
|---|---|---|
| 1 | FileName | 用戶選取的檔案的路徑和檔案名 |
| 2 | InitialDirectory | 打開對話框首先顯示該屬性指定的檔案夾中的檔案Font 在對話框顯示的字體 |
| 3 | CheckPathExists | 在對話框回傳之前,檢查指定路徑是否存在 |
| 4 | DefaultExt | 如果用戶未指定擴展名,自動增加屬性指定的檔案擴展名 |
| 5 | RestoreDirectory | 控制對話框在關閉之前是否恢復當前目錄 |
| 6 | ShowHelp | 啟用“幫助”按鈕 |
| 7 | Title | 將顯示在對話框標題欄中的字符 |
| 8 | ValiDateNames | 控制對話框檢查檔案名中是否不含有無效的字符或序列 |
事件:
FileOk:用戶點擊“打開”或“保存”按鈕時要處理的事件,
HelpRequest:當用戶點擊“幫助”按鈕時要處理的事件,
方法:
ShowDialog():打開對話框,根據方法的回傳值確定用戶單擊了那個按鈕,如回傳
DialogResult.Cancle,用戶單擊了忽略按鈕,如回傳DialogResult.OK,用戶單擊了打開或保存按鈕,
Reset():將所有屬性重新設定為默認值,
顏色對話框(ColorDialog)
屬性
Color:用來設定和獲取用戶選定的顏色,
字體對話框(FontDialog)
屬性:
| 序號 | 屬性 | 用途 |
|---|---|---|
| 1 | ShowColor | 控制是否顯示顏色選項 |
| 2 | AllowScriptChange | 是否顯示字體的字符集 Font 在對話框顯示的字體 |
| 3 | AllowVerticalFonts | 是否可選擇垂直字體 |
| 4 | Color | 在對話框中選擇的顏色 |
| 5 | FontMustExist | 字體不存在時是否顯示錯誤 |
| 6 | MaxSize | 可選擇的最大字號 |
| 7 | MinSize | 可選擇的最小字號 |
| 8 | ScriptsOnly | 指示對話框是否允許為所有非OEM 和Symbol 字符集以及ANSI 字符集選擇字體 |
| 9 | ShowEffects | 是否顯示下劃線、洗掉線、字體顏色選項 |
| 10 | ShowHelp | 是否顯示“幫助”按鈕 |
事件:
Apply:點擊“應用”按鈕時要處理的事件,
HelpRequest:點擊“幫助”按鈕時要處理的事件,
方法:
ShowDialog():打開對話框,
Reset():將所有屬性重新設定為默認值,
列印組件
PrintDocument類
是用于完成列印的類,
屬性DocumentName:字串型別,記錄列印檔案時顯示的檔案名,
方法Print:開始檔案的列印,
事件BeginPrint:在呼叫Print方法后,在列印檔案的第一頁之前發生,
事件PrintPage:需要列印新的一頁時發生,
事件EndPrint:在檔案的最后一頁列印后發生,
列印步驟:
創建PrintDocument組件的物件 ,
使用頁面設定對話框PageSetupDialog設定頁面列印方式,這些設定作為要列印的所有頁的默認設定,使用列印對話框PrintDialog設定對檔案進行列印的列印機的引數,
呼叫PrintDocument.Print方法來實際列印檔案 ,
事件處理:
引發事件:BeginPrint、PrintPage、EndPrint ,其中每列印一頁都引發PrintPage事件,列印多頁,要多次引發PrintPage事件,
程式員應為這3個事件撰寫事件處理函式,BeginPrint事件處理函式進行列印初始化,一般設定在列印時所有頁的相同屬性或共用的資源,例如所有頁共同使用的字體、建立要列印的檔案流等,PrintPage事件處理函式負責列印一頁資料,EndPrint事件處理函式進行列印善后作業,
列印設定對話框
用戶使用此對話框能夠設定紙張大小(型別)、紙張來源、縱向與橫向列印、上下左右的頁邊距等,
pageSetupDialog1.Document=printDocument1;
pageSetupDialog1.ShowDialog();

列印預覽對話框
printPreviewDialog1.Document=printDocument1;
printPreviewDialog1.ShowDialog();
列印對話框(PrintDialog)
首先設定其屬性Document為指定的PrintDocument類物件,打開PrintDialog對話框后,修改的設定將保存到PrintDocument類的物件中,當用戶點擊“確定”按鈕后呼叫PrintDocument類的Print()方法實作列印,

6.3.6 應用實體
【例6-7】文本編輯器的實作
實作一個類似于Windows寫字板的程式,

本章小結
常用控制元件
單選按鈕、復選框、框架、串列框、組合框、滾動條、進度條、定時器
選單設計
MenuStrip和ContextMenuStrip
對話框
訊息框MessageBox、通用對話框CommonDialog 、列印組件
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/281312.html
標籤:其他
上一篇:開發8年程式員:你是不是瘋了,為什么位元組跳動的Offer都不要了?
下一篇:STL--vector模擬實作
