版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章Windows應(yīng)用程序5.1窗體及其常用屬性5.2常用控件5.3菜單、工具欄和狀態(tài)欄
5.4單文檔界面和多文檔界面
5.5通用對話框5.1窗體及其常用屬性5.1.1窗體與.NET框架中的所有對象一樣,窗體是Form類的實例。用“Windows窗體設(shè)計器”創(chuàng)建的窗體是類,它是用來創(chuàng)建窗體的模板。該框架使用戶可以從現(xiàn)有窗體繼承、添加功能或修改現(xiàn)有行為。Form類屬于System.Windows.Forms命名空間,F(xiàn)orm類對象具有Windows應(yīng)用程序窗口的基本功能,可以是對話框、單文檔或者多文檔應(yīng)用程序窗口的基本類。Form類對象還是一個容器,可以在Form窗體中放置其他控件,如圖按鈕控件、文本框控件等。5.1.2窗體的常用屬性1.Visible屬性窗體的可見性通常由
Visible屬性控制。在事件中,如果希望
Windows應(yīng)用程序的主窗體在應(yīng)用程序啟動時不可見,會發(fā)現(xiàn)將它的Visible屬性設(shè)置為假的方法無效。因為通常啟動窗體的生存期決定了應(yīng)用程序的生存期,只要將應(yīng)用程序的啟動變?yōu)橐粋€模塊,這樣就可以隨意使窗體可見(和不可見),因為當(dāng)“關(guān)閉”模塊時,應(yīng)用程序的生存期也隨之結(jié)束。2.TopMost屬性使用
MicrosoftWindows2000/XP/2003系統(tǒng)時,頂端的窗體始終位于指定應(yīng)用程序中所有窗口的前面。例如,可能希望將浮動工具窗口保持在應(yīng)用程序主窗口的前面。TopMost屬性控制窗體是否為最頂端的窗體。應(yīng)注意,即使最頂端的窗體不處于活動狀態(tài),它也會浮在其他非頂端窗體之前。
5.1.2窗體的常用屬性3.FormBorderStyle屬性當(dāng)確定Windows窗體的外觀時,有幾種邊框樣式可供選擇,如表5.1所示。通過更改
FormBorderStyle屬性,可控制和調(diào)整窗體的大小。設(shè)置說明無沒有邊框或與邊框相關(guān)的元素,用于啟動窗體固定三維當(dāng)需要三維邊框效果時使用。不可調(diào)整大小,可在標(biāo)題欄上包括控件菜單欄、標(biāo)題欄、最大化和最小化按鈕。用于創(chuàng)建相對于窗體主體凸起的邊框固定對話框用于對話框。不可調(diào)整大小,可在標(biāo)題欄上包括控件菜單欄、標(biāo)題欄、最大化和最小化按鈕。用于創(chuàng)建相對于窗體主體凹進(jìn)的邊框固定單線邊框不可調(diào)整大小??砂丶藛螜凇?biāo)題欄、最大化和最小化按鈕。只能使用最大化和最小化按鈕改變大小。用于創(chuàng)建單線邊框固定工具窗口顯示不可調(diào)整大小的窗口,其中包含“關(guān)閉”按鈕和以縮小字體顯示的標(biāo)題欄文本。該窗體不在
Windows任務(wù)欄中出現(xiàn)。用于工具窗口可調(diào)整大小該項為默認(rèn)項,可調(diào)整大小,經(jīng)常用于主窗口??砂丶藛螜?、標(biāo)題欄、最大化和最小化按鈕。鼠標(biāo)指針在任何邊緣處都可調(diào)整大小可調(diào)整大小的工具窗口用于工具窗口。顯示可調(diào)整大小的窗口,其中包括“關(guān)閉”按鈕和以縮小字體顯示的標(biāo)題欄文本。該窗體不在
Windows任務(wù)欄中出現(xiàn)表5.1窗體的邊框風(fēng)格5.1.2窗體的常用屬性4.Location屬性Location屬性值可指定窗體在計算機(jī)屏幕上的顯示位置。它以像素為單位指定窗體左上角的位置。還需要設(shè)置StartPosition屬性,以指示顯示區(qū)域的邊界。
Windows應(yīng)用程序的
StartPosition屬性的默認(rèn)設(shè)置是“WindowsDefaultLocation”,該設(shè)置通知操作系統(tǒng)在啟動時根據(jù)當(dāng)前硬件計算該窗體的最佳位置。5.1.3窗體的常用方法和事件1.窗體的常用方法Form類有很多方法,下面列出比較常用的方法。(1)Close()方法。窗體關(guān)閉,釋放所有資源。如果窗體是主窗體,執(zhí)行Close()方法后程序結(jié)束。(2)Hide()方法。隱藏窗體,但不破壞窗體,也不釋放資源,可以使用Show()方法重新打開。(3)Show()方法。顯示窗體。2.窗體的常用事件Form類的事件允許響應(yīng)對窗體執(zhí)行的操作,常用的事件有以下幾種。(1)Load。在窗體顯示之前發(fā)生,可以在此事件處理函數(shù)中做一些初始化的工作。(2)Click。鼠標(biāo)單擊窗體時發(fā)生。(3)GotFocus。窗體獲得焦點時發(fā)生。(4)Closed。關(guān)閉窗體時發(fā)生。(5)Activated。激活窗體時發(fā)生。5.1.4綜合應(yīng)用【例EX5_1】設(shè)計一個WinForm應(yīng)用程序,可以調(diào)節(jié)窗體的透明度。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX5_1”,從工具箱中拖曳2個“Button”控件到窗體上。(2)設(shè)置控件與窗體屬性設(shè)置窗體和控件的屬性如表5.2所示。類別名稱屬性設(shè)置值FormFormOpacitytext可調(diào)節(jié)透明度的窗體ButtonBtnAddtext增加透明度BtnSubtext降低透明度表5.2屬性設(shè)置5.1.4綜合應(yīng)用(3)添加代碼在窗體設(shè)計器中分別雙擊兩個按鈕,在代碼編輯窗口中添加代碼,代碼如下所示:namespaceEX5_1{publicpartialclassFormOpacity:Form{publicFormOpacity(){ InitializeComponent(); }privatevoidBtnAdd_Click(objectsender,EventArgse){if(this.Opacity>0.2){ this.Opacity-=0.1; }else{ this.Close();} //關(guān)閉程序}privatevoidBtnSub_Click(objectsender,EventArgse){ this.Opacity+=0.1; }}}5.1.4綜合應(yīng)用(4)運行程序按“Ctrl+F5”組合鍵運行程序,調(diào)節(jié)窗體透明度前后如圖5.1和圖5.2所示。
圖5.1調(diào)節(jié)窗體透明度前
圖5.2調(diào)節(jié)窗體透明度后5.2常用控件5.2.1Control類Control類是“可視化組件”的基類,因此它是形成圖形化用戶界面的基礎(chǔ),屬于System.Windows.Forms命名空間,如圖5.3所示。圖5.3System.Windows.Forms命名空間在類中的關(guān)系圖5.2.1Control類1.控件的屬性表5.3列出了控件類的主要屬性。從表中可以看到,有很多屬性都涉及handles或者windowhandles。這是因為一個控件實際上包含兩方面的內(nèi)容:一個.NET對象和一個Windows控件對象。屬于一個應(yīng)用的每一個窗口和控件,都有一個被稱為windowhandles的唯一標(biāo)識。屬性含義Anchor設(shè)置控件的哪個邊緣錨定到其容器邊緣Dock設(shè)置控件停靠到父容器的哪個邊緣BackColor獲取或設(shè)置控件的背景色Cursor獲取或設(shè)置當(dāng)鼠標(biāo)指針位于控件上時顯示的光標(biāo)Enabled設(shè)置控件是否可以對用戶交互做出響應(yīng)Font設(shè)置或獲取控件顯示文字的字體ForeColor獲取或設(shè)置控件的前景色Height獲取或設(shè)置控件的高度Left獲取或設(shè)置控件的左邊界到容器左邊界的距離Name獲取或設(shè)置控件的名稱Parent獲取或設(shè)置控件的父容器Right獲取或設(shè)置控件的右邊界到容器左邊界的距離Tabindex獲取或設(shè)置在控件容器上控件的Tab鍵的順序TabStop設(shè)置用戶能否使用Tab鍵將焦點放到該控件上Tag獲取或設(shè)置包括有關(guān)控件的數(shù)據(jù)對象Text獲取或設(shè)置與此控件關(guān)聯(lián)的文本Top獲取或設(shè)置控件的頂部到其容器頂部的距離Visible設(shè)置是否在運行時顯示該控件Width獲取或設(shè)置控件的寬度表5.3Control類的常見屬性5.2.1Control類2.控件的方法控件類的方法多于100個,表5.4列出了最常用的一些方法。方法含義Contains檢索一個值,該值指示指定控件是否為一個控件的子控件FindForm檢索控件所在的窗體Focus為控件設(shè)置輸入焦點Hide對用戶隱藏控件Refresh強(qiáng)制控件使其工作區(qū)無效并立即重繪自己和任何子控件Select已重載。激活控件SelectNextControl激活下一個控件Show向用戶顯示控件Update使控件重繪其工作區(qū)內(nèi)的無效區(qū)域表5.4控件類的常用方法5.2.1Control類3.控件的事件控件能對用戶或應(yīng)用程序的某些行為做出響應(yīng),這些行為稱為事件。Control類的常見事件如表5.5所示。事件含義Click單擊控件時發(fā)生DoubleClick雙擊控件時發(fā)生DragDrop當(dāng)一個對象被拖到控件上,且用戶釋放鼠標(biāo)時發(fā)生DragEnter當(dāng)被拖動的對象進(jìn)入控件的邊界時發(fā)生DragLeave當(dāng)被拖動的對象離開控件的邊界時發(fā)生DragOver當(dāng)被拖動的對象在控件上時發(fā)生KeyDown在控件有焦點的情況下,按下任一個鍵時發(fā)生,在KeyPress前發(fā)生KeyPress在控件有焦點的情況下,按下任一個鍵時發(fā)生,在KeyUp前發(fā)生KeyUp在控件有焦點的情況下釋放鍵時發(fā)生GetFocus在控件接收焦點時發(fā)生LostFocus在控件失去焦點時發(fā)生MouseDown當(dāng)鼠標(biāo)指針位于控件上,并按下鼠標(biāo)鍵時發(fā)生MouseMove當(dāng)鼠標(biāo)指針移到控件上時發(fā)生MouseUp當(dāng)鼠標(biāo)指針位于控件上,并釋放鼠標(biāo)鍵時發(fā)生Paint重繪控件時發(fā)生Validated在控件完成驗證時發(fā)生Validating在控件正在驗證時發(fā)生Resize在調(diào)整控件大小時發(fā)生表5.5Control類的常見事件5.2.2標(biāo)簽與按鈕
1.標(biāo)簽(Label)Windows窗體的鏈接標(biāo)簽(LinkLabel)控件和Label控件有許多共同之處,凡是使用Label控件的地方,都可以使用LinkLabel控件。此外,LinkLabel控件可以向
Windows窗體應(yīng)用程序添加
Web樣式的鏈接。它可以將文本的一部分設(shè)置為指向某個對象或
Web頁的鏈接,如圖5.4所示。圖5.4鏈接標(biāo)簽控件5.2.2標(biāo)簽與按鈕2.按鈕(Button)按鈕上顯示的文本包含在
Text屬性中。文本的外觀受Font屬性和TextAlign屬性控制。按鈕(Button)控件還可以使用Image和ImageList屬性顯示圖像。在任何Windows窗體上都可以指定某個Button控件為“接受”按鈕(也稱“默認(rèn)”按鈕)。每當(dāng)用戶按Enter鍵時,即單擊“默認(rèn)”按鈕,而不管當(dāng)前窗體上其他控件哪個具有焦點。在設(shè)計器中指定“接受”按鈕的方法是:選擇按鈕所駐留的窗體,在屬性窗口中將窗體的AcceptButton屬性設(shè)置為Button控件的名稱。也可以用編程方式指定“接受”按鈕,在代碼中將窗體的AcceptButton屬性設(shè)置為適當(dāng)?shù)腂utton控件。例如:
privatevoidSetDefault(ButtonmyDefaultBtn){ this.AcceptButton=myDefaultBtn;}5.2.2標(biāo)簽與按鈕在設(shè)計器中指定“取消”按鈕的方法是:選擇按鈕所駐留的窗體后,在屬性窗口中將窗體的CancelButton屬性設(shè)置為
Button控件的名稱。也可以用編程方式指定“取消”按鈕,將窗體的
CancelButton屬性設(shè)置為適當(dāng)?shù)?/p>
Button控件。例如:
privatevoidSetCancelButton(ButtonmyCancelBtn){ this.CancelButton=myCancelBtn;}5.2.3文本框
1.控制TextBox控件中字符的插入點當(dāng)Windows窗體TextBox控件最初得到焦點時,文本框內(nèi)的默認(rèn)插入位置是在任何現(xiàn)有文本的左邊。用戶可以使用鍵盤或鼠標(biāo)來移動插入點。如果文本框失去焦點而后又再次獲得焦點,則插入點為用戶上一次放置的位置。將SelectionStart屬性設(shè)置為適當(dāng)值。如果值為零,則插入點緊挨第一個字符的左邊。將SelectionLength屬性設(shè)置為要選擇的文本的長度。下面的代碼總是將插入點返回到0,當(dāng)然必須將TextBox1_Enter事件處理程序綁定到該控件。
privatevoidtextBox1_Enter(Objectsender,System.EventArgse){ textBox1.SelectionStart=0; textBox1.SelectionLength=0;}5.2.3文本框
2.創(chuàng)建密碼框密碼框是一種
Windows窗體文本框,它在用戶輸入字符串時顯示占位符。將TextBox控件的PasswordChar屬性設(shè)置為某個特定字符。PasswordChar屬性指定在文本框中顯示的字符。例如,如果希望在密碼框中顯示星號,則在屬性窗口中將PasswordChar屬性指定為“*”。運行時,無論用戶在文本框中輸入什么字符,都顯示為星號。設(shè)置MaxLength屬性指定可在文本框中輸入多少個字符。如果超過了最大長度,系統(tǒng)會發(fā)出聲響,且文本框不再接受任何字符。5.2.3文本框3.以編程方式選擇文本將SelectionStart屬性設(shè)置為要選擇的文本的開始位置。SelectionStart屬性是一個數(shù)字,指示文本字符串內(nèi)的插入點,值為
0表示最左邊的位置。如果將SelectionStart屬性設(shè)置為等于或大于文本框內(nèi)的字符數(shù)的值,則插入點被放在最后一個字符后面。將SelectionLength屬性設(shè)置為要選擇的文本的長度。SelectionLength屬性是一個設(shè)置插入點寬度的數(shù)值。如果將SelectionLength設(shè)置為大于0的數(shù),則會選擇該數(shù)目的字符,開始位置是當(dāng)前插入點。通過SelectedText屬性可以訪問選定的文本。
下面的代碼將在控件的Enter事件發(fā)生時選擇文本框的內(nèi)容,必須將TextBox1_Enter事件處理程序綁定到控件。privatevoidtextBox1_Enter(objectsender,System.EventArgse){ textBox1.SelectionStart=0; textBox1.SelectionLength=textBox1.Text.Length;}5.2.3文本框文本框控件還提供了一些方法,以方便用戶使用,如表5.6所示。方法名稱用途方法名稱用途Clear清除文本框中的文本Paste用剪貼板內(nèi)容替換文本框文本AppendText向文本框中添加文字Select在文本框中選擇指定范圍的文本Copy復(fù)制文本框文本到剪貼板SelectAll選擇文本框中的所有內(nèi)容Cut剪切文本框文本到剪貼板表5.6TextBox的其他方法5.2.3文本框下面給出一個使用按鈕和文本框的應(yīng)用實例?!纠鼸X5_2】創(chuàng)建一個登錄界面,并驗證登錄,用戶名和密碼均為admin。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX5_2”,從工具箱中拖曳2個“Label”、2個“TextBox”和2個“Button”控件到窗體上。(2)設(shè)置控件與窗體屬性設(shè)置窗體和控件的屬性如表5.7所示。類別名稱屬性設(shè)置值FormfmLoginText登錄窗口ButtonbtnLoginText登錄btnClearText清空Labellabel1Text用戶名:label2Text密碼:TextBoxtxtNameTextBoxtxtPasswordPasswordChar*表5.7屬性設(shè)置5.2.3文本框(3)添加代碼在窗體設(shè)計器中分別雙擊兩個按鈕,在代碼編輯窗口中添加代碼,代碼如下所示。(4)運行程序按“Ctrl+F5”組合鍵運行程序,結(jié)果如圖5.5所示。
圖5.5例EX5_2運行的結(jié)果5.2.4列表框1.ListBox控件ListBox控件用于顯示列表項,用戶可從中選擇一項或多項。當(dāng)
MultiColumn屬性設(shè)置為
true時,列表框以多列形式顯示,并且會出現(xiàn)一個水平滾動條。當(dāng)
MultiColumn屬性設(shè)置為
false時,列表框以單列形式顯示,并且會出現(xiàn)一個垂直滾動條。當(dāng)ScrollAlwaysVisible設(shè)置為true時,無論項數(shù)多少都將顯示滾動條。SelectionMode屬性指定一次可以選擇多少列表項。SelectedIndex屬性返回對應(yīng)于列表框中第一個選定項的整數(shù)值。通過在代碼中更改
SelectedIndex值,可以以編程方式更改選定項。SelectedItem屬性類似于
SelectedIndex,但它返回項本身,通常是字符串值。Items.Count屬性反映列表中的項數(shù),且其值總比SelectedIndex的最大可能值大1,因為SelectedIndex是從零開始的。5.2.4列表框2.ComboBox控件ComboBox控件用于在下拉組合框中顯示數(shù)據(jù)。默認(rèn)情況下,ComboBox控件分兩部分顯示:第一部分是一個允許用戶輸入列表項的文本框;第二部分是列表框,它顯示用戶可以選擇的項。DropDownStyle屬性決定ComboBox的樣式及其行為方式,圖5.6給出了三種不同的樣式。圖5.6ComboBox的三種樣式5.2.4列表框3.ListView控件ListView控件顯示帶圖標(biāo)的項列表,通過它可以創(chuàng)建類似于
Windows資源管理器右窗格的用戶界面。該控件有4種視圖模式:LargeIcon、SmallIcon、List和Details。視圖模式由View屬性設(shè)置。LargeIcon視圖模式在項文本旁顯示大圖標(biāo)。如果控件足夠大,則項顯示在多列中。SmallIcon視圖模式除顯示小圖標(biāo)外,其他方面與大圖標(biāo)視圖模式相同。List視圖模式顯示小圖標(biāo),但總是顯示在單列中。Details視圖模式在多列中顯示項。所有視圖模式都可以顯示圖像列表中的圖像。5.2.4列表框ListView控件可在設(shè)計和運行時添加或移除列表項。(1)在設(shè)計器中添加或移除項。在屬性窗口中單擊Items屬性旁的省略號按鈕(…),出現(xiàn)“ListViewItem集合編輯器”,如圖5.7所示。要添加項,單擊“添加”按鈕,然后設(shè)置新項的屬性,如Text和ImageIndex屬性。若要移除某項,選擇該項并單擊“移除”按鈕。
(2)以編程方式添加項。使用Items屬性的Add方法。例如:listView1.Items.Add("Listitemtext",3);(3)以編程方式移除項。使用Items屬性的RemoveAt或Clear方法。RemoveAt方法移除一項,而Clear方法移除列表中的所有項。
listView1.Items.RemoveAt(0); //移除列表的第一項listView1.Items.Clear(); //移除所有項5.2.4列表框(4)在設(shè)計器中添加列。將控件的View屬性設(shè)置為Details。在屬性窗口中,單擊Columns屬性旁的省略號按鈕,出現(xiàn)“ColumnHeader集合編輯器”。使用“添加”按鈕添加新列,然后選擇列標(biāo)頭并設(shè)置其文本(列的標(biāo)題)、文本對齊方式和寬度,如圖5.8所示。
圖5.7ListViewItem集合編輯器
圖5.8ColumnHeader集合編輯器5.2.4列表框(5)以編程方式添加列。將控件的View屬性設(shè)置為Details,使用列表視圖的Columns屬性的Add方法。例如:
listView1.View=View.Details; //將View設(shè)為DetailslistView1.Columns.Add("Filetype",20,HorizontalAlignment.Left);//添加一個寬20的左對齊的列
5.2.4列表框(6)在列表視圖中顯示圖像。Windows窗體ListView控件可顯示三個圖像列表中的圖標(biāo)。List視圖、Details視圖和SmallIcon視圖顯示SmallImageList屬性中指定的圖像列表中的圖像。LargeIcon視圖顯示LargeImageList屬性中指定的圖像列表中的圖像。列表視圖還能在大圖標(biāo)或小圖標(biāo)旁顯示在StateImageList屬性中設(shè)置的一組附加圖標(biāo)。將SmallImageList、LargeImageList或
StateImageList設(shè)置為已有
ImageList組件。可在設(shè)計器中使用屬性窗口設(shè)置,也可在代碼中設(shè)置。例如:listView1.SmallImageList=imageList1;為每個具有關(guān)聯(lián)圖標(biāo)的列表項設(shè)置ImageIndex或StateImageIndex屬性。這些屬性可通過“ListViewItem集合編輯器”設(shè)置。要打開“ListViewItem集合編輯器”,可單擊屬性窗口中的Items屬性旁的省略號(…)按鈕。也可用代碼進(jìn)行設(shè)置,例如:
listView1.Items[0].ImageIndex=3;//設(shè)置第一列表項顯示第4幅圖像
5.2.4列表框【例EX5_3】創(chuàng)建列表框。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX5_3”,從工具箱中拖曳1個“ComboBox”、1個“ListView”、1個“ListBox”和3個“Button”控件到窗體上。(2)設(shè)置控件與窗體屬性設(shè)置窗體和控件的屬性如表5.8所示。類別名稱屬性設(shè)置值FormfmListText列表框ButtonbtnAddComText>>btnSelectAllText全選btnAddListText>>ListBoxlstbAddressSelectionModeMultSimpleListViewlstvAddressViewListComboBoxcobAddress表5.8屬性設(shè)置5.2.4列表框(3)添加代碼在窗體設(shè)計器中分別雙擊3個按鈕,在代碼編輯窗口中添加代碼,如下所示。(4)運行程序按“Ctrl+F5”組合鍵運行程序,分別添加國名,結(jié)果如圖5.9所示。5.2.5進(jìn)度條、滾動條和滑動條1.進(jìn)度條進(jìn)度條(ProgressBar)控件用來表示進(jìn)度,在工具箱中圖標(biāo)為“
”。ProgressBar控件有Minimum屬性和Maximum屬性,默認(rèn)值分別為0和100。Value屬性表示當(dāng)前值??梢园岩粋€整數(shù)賦給Value來設(shè)置控件的位置,或者使用Increment()方法和PerformStep()方法來改變Value的值。但是它不能由用戶進(jìn)行操作,而是由程序來設(shè)定Value、Minimum和Maximum的屬性值的。2.滾動條在應(yīng)用程序的窗口或?qū)υ捒蛑性O(shè)置了滾動條,用戶可以使用鼠標(biāo)調(diào)整滾動條中滑塊的位置來改變其值。滾動條控件包含水平滾動條(HScrollBar)和垂直滾動條(VScrollBar)兩種,在工具箱中圖標(biāo)分別為“
”和“
”,它們的常用屬性及說明如表5.9所示。屬性說明Value獲取或設(shè)置表示滾動框在滾動條控件中的當(dāng)前位置的數(shù)值Maximum獲取或設(shè)置可滾動范圍的值的上限值Minimum獲取或設(shè)置可滾動范圍的值的下限值SmallChange獲取或設(shè)置小距離移動滾動框時,在
Value屬性中加上或減去的值LargeChange獲取或設(shè)置一個值,當(dāng)滾動框長距離移動時,向Value屬性中加上該值或從中減去該值表5.9滾動條控件的常用屬性及說明5.2.5進(jìn)度條、滾動條和滑動條3.滑動條TrackBar控件是一個作為獨立控件使用的滾動條,在工具箱中圖標(biāo)為“
”,其屬性及說明如表5.10所示。在TrackBar上,可以沿著軌道拖拉的滑動塊被稱為thumb,單擊軌道時,會引起thumb在軌道上跳躍滑動。許多視頻或音頻播放軟件中表示進(jìn)程的滑桿就可以使用此控件創(chuàng)建。屬性說明Value獲取或設(shè)置表示跟蹤條上滾動框的當(dāng)前位置的數(shù)值Maximum獲取或設(shè)置此
TrackBar使用范圍的上限值Minimum獲取或設(shè)置此
TrackBar使用范圍的下限值LargeChange獲取或設(shè)置一個值,當(dāng)滾動框長距離移動時,向Value屬性中加上該值或從中減去該值Orientation獲取或設(shè)置一個值,該值指示跟蹤條是在水平方向還是在垂直方向TickFrequency獲取或設(shè)置一個值,該值指定控件上繪制的刻度之間的增量表5.10滑動條控件屬性及說明5.2.5進(jìn)度條、滾動條和滑動條【例EX5_4】調(diào)節(jié)窗體背景色。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX5_4”,從工具箱中拖曳1個“HScrollBar”、1個“VScrollBar”、1個“TrackBar”和1個“ProgressBar”控件到窗體上。滾動條和滑動條是設(shè)置窗體背景色的,精度條是顯示進(jìn)度的。(2)設(shè)置控件與窗體屬性設(shè)置窗體和控件的屬性如表5.11所示。類別名稱屬性設(shè)置值FormfmBackColorText調(diào)節(jié)窗體背景色HScrollBarhScrollBar1VScrollBarvScrollBar1TrackBartrackBar1ProgressBarprogressBar表5.11屬性設(shè)置5.2.5進(jìn)度條、滾動條和滑動條(3)添加代碼在窗體設(shè)計器中分別雙擊4個控件,在代碼編輯窗口中添加代碼,如下所示。(4)運行程序按“Ctrl+F5”組合鍵運行程序,運行前后的窗體如圖5.10和圖5.11所示。
圖5.10運行前窗體
圖5.11運行后窗體5.2.6圖片框Windows窗體PictureBox控件用于顯示位圖、GIF、JPEG、圖元文件或圖標(biāo)格式的圖片,在工具箱中圖標(biāo)為“
”。顯示的圖片由Image屬性確定,SizeMode屬性控制圖像和控件彼此適合的方式??娠@示的文件類型如表5.12所示。類型文件擴(kuò)展名類型文件擴(kuò)展名位圖.bmp圖元文件.wmfIcon.icoJPEG.jpgGIF.gif表5.12圖形文件類型5.2.6圖片框PictureBox控件通過SizeMode屬性選擇下列顯示方式:
(1)將圖片的左上角與控件的左上角對齊。(2)使圖片在控件內(nèi)居中。(3)調(diào)整控件的大小以適合其顯示的圖片。(4)拉伸所顯示的圖片以適合控件。拉伸圖片(尤其是位圖格式的圖片)可能導(dǎo)致圖像質(zhì)量受損。圖元文件(運行時繪制圖像的圖形指令列表)比位圖更適合于拉伸圖片。5.2.7定時器定時器(Timer)控件可以按照用戶指定的時間間隔來觸發(fā)事件,在工具箱中圖標(biāo)為“”。它常用的屬性有兩個:(1)Enabled屬性。指定定時器是否處于運行狀態(tài),也就是說,是否可以觸發(fā)事件。默認(rèn)值為false。(2)Interval屬性。指定定時器控件觸發(fā)的時間間隔,單位為毫秒。定時器控件包括一個Tick事件。當(dāng)定時器處于運行狀態(tài)時,每當(dāng)?shù)竭_(dá)指定時間間隔,就會觸發(fā)這個事件。5.2.7定時器【例EX5_5】設(shè)計一幅移動的圖片。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX5_5”,從工具箱中拖曳1個“PictureBox”、1個“Timer”和2個“Button”控件到窗體上。(2)設(shè)置控件與窗體屬性設(shè)置窗體和控件的屬性如表5.13所示。類別名稱屬性設(shè)置值FormfmBackColorText調(diào)節(jié)窗體背景色PictureBoxpictureBox1Image選擇一張圖片SizeModeStretchImageTimertimer1Interval10Buttonbutton1Text開始移動button2Text暫停移動表5.13屬性設(shè)置5.2.7定時器(3)添加代碼在窗體設(shè)計器中分別雙擊兩個按鈕控件,在代碼編輯窗口中添加代碼,如下所示:namespaceEX5_5{publicpartialclassfrmMowePic:Form{publicfrmMowePic(){InitializeComponent();}privatevoidbtnStart_Click(objectsender,EventArgse){timer1.Start(); //開始移動}privatevoidbtnPause_Click(objectsender,EventArgse){timer1.Stop(); //停止移動}privatevoidtimer1_Tick(objectsender,EventArgse){pictureBox1.Left+=1;}}}5.2.7定時器(4)運行程序按“Ctrl+F5”組合鍵運行程序,運行前后的窗體如圖5.12和圖5.13所示。
圖5.12運行前窗體
圖5.13運行后窗體5.2.8其他控件1.RadioButton控件單選按鈕RadioButton控件旨在為用戶提供兩種或多種設(shè)置以便選擇其一,在工具箱中圖標(biāo)為“
”。當(dāng)單擊RadioButton控件時,其Checked屬性設(shè)置為true,并且調(diào)用Click事件處理程序。當(dāng)Checked屬性值更改時,將引發(fā)CheckedChanged事件。如果將AutoCheck屬性設(shè)置為true(默認(rèn)),則當(dāng)選擇單選按鈕時,將自動清除該組中的所有其他單選按鈕。通常,僅當(dāng)使用驗證代碼以確保選定的單選按鈕是允許的選項時,才將該屬性設(shè)置為false。將RadioButton控件分組使之獨立于其他組工作。具體做法是:將GroupBox控件或Panel控件從“工具箱”的“Windows窗體”選項卡中拖到窗體上,然后在GroupBox控件或Panel控件上繪制RadioButton控件。5.2.8其他控件2.CheckBox控件Windows窗體復(fù)選框(CheckBox)雖然與單選按鈕看似功能類似,但卻存在很大差異:當(dāng)用戶選擇某個單選按鈕時,同一組中的其他單選按鈕不能同時選定;相反,卻可以選擇任意數(shù)目的復(fù)選框。在工具箱中圖標(biāo)為“
”。Windows窗體CheckBox控件常用于為用戶提供是/否或真/假選項??梢猿山M使用復(fù)選框控件以顯示多重選項,用戶可以從中選擇一項或多項。多個復(fù)選框可以使用GroupBox控件進(jìn)行分組。這對于可視外觀及用戶界面設(shè)計很有用,因為成組控件可以在窗體設(shè)計器上一起移動。CheckBox控件有兩個重要屬性Checked和CheckState。Checked屬性返回true或false。CheckState屬性返回CheckState.Checked(選擇)或CheckState.Unchecked(未選擇);或者,如果ThreeState屬性設(shè)置為true,CheckState還可能返回CheckState.Indeterminate(不確定狀態(tài))。5.2.8其他控件3.GroupBox控件GroupBox(分組框)控件用于為其他控件提供組合容器,在工具箱中圖標(biāo)為“
”。GroupBox控件類似于
Panel控件,但GroupBox控件可以顯示標(biāo)題(分組框的標(biāo)題由Text屬性定義),而Panel控件有滾動條。設(shè)計中當(dāng)移動單個
GroupBox控件時,它包含的所有控件也將一起移動。5.2.9綜合應(yīng)用【例EX5_6】設(shè)計一個顯示學(xué)生信息的Windows窗體并可以滾動顯示學(xué)生照片。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX5_6”,從工具箱中拖曳1個“PictureBox”、1個“HScrollBar”、1個“VScrollBar”、3個“GroupBox”、2個“RadioButton1”和2個“CheckBox”控件到窗體上。(2)設(shè)置控件與窗體屬性設(shè)置窗體和控件的屬性如表5.14所示。類別名稱屬性設(shè)置值FormfrmStudentInfoText學(xué)生信息PictureBoxpictureBox1Image選擇一張比較大的圖片SizeModeAutoSizeGroupBoxgroupBox1Text照片groupBox2Text性別groupBox3Text愛好表5.14屬性設(shè)置5.2.9綜合應(yīng)用(3)添加代碼在代碼編輯窗口中添加代碼,代碼如下所示。(4)運行程序按“Ctrl+F5”組合鍵運行程序,運行后窗體如圖5.14所示。圖5.14運行后窗體5.3菜單、工具欄和狀態(tài)欄5.3.1菜單1.在設(shè)計時創(chuàng)建菜單MenuStrip組件在工具箱中圖標(biāo)為“
”。在菜單設(shè)計器中,創(chuàng)建兩個頂級菜單項,并將其
Text屬性分別設(shè)置為“&File”、“&Edit”,然后依次在頂級菜單File下創(chuàng)建三個子菜單,并將它們的
Text屬性分別設(shè)置為“&New”、“&Open”和“&Exit”。最終的效果如圖5.15所示。圖5.15創(chuàng)建菜單項5.3.1菜單2.以編程方式創(chuàng)建菜單項也可以用編程的方式添加一個或多個菜單條目。首先創(chuàng)建一個MenuStrip對象:MenuStripmenu=newMenuStrip();菜單中的每一個菜單項都是一個ToolStripMenuItem對象,因此先確定要創(chuàng)建哪幾個頂級菜單項,這里我們創(chuàng)建File和Edit兩個頂級菜單。ToolStripMenuItemitem1=newToolStripMenuItem("&File");ToolStripMenuItemitem2=newToolStripMenuItem("&Edit");接著使用MenuStrip的Items集合的AddRange方法一次性將頂級菜單加入MenuStrip中。此方法要求用一個ToolStripItem數(shù)組作為傳入?yún)?shù):menu.Items.AddRange(newToolStripItem[]{item1,item2});繼續(xù)創(chuàng)建三個ToolStripMenuItem對象,作為頂級菜單File的下拉子菜單。ToolStripMenuItemitem3=newToolStripMenuItem("&New");ToolStripMenuItemitem4=newToolStripMenuItem("&Open");ToolStripMenuItemitem5=newToolStripMenuItem("&Exit");
5.3.1菜單3.以編程方式禁用菜單項禁用菜單項只要將菜單項的Enabled屬性設(shè)置為false即可。以上例創(chuàng)建的菜單為例,禁用Open菜單項:item4.Enabled=false;刪除菜單項就是將該菜單項從相應(yīng)的MenuStrip的Items集合中刪除。根據(jù)應(yīng)用程序的運行需要,如果此菜單項以后要再次使用,最好是隱藏或暫時禁用該菜單項而不是刪除它。4.以編程方式刪除菜單項
調(diào)用MenuStrip對象的Items集合中的Remove方法可以刪除指定的ToolStripMenuItem,一般用于刪除頂級菜單;若要刪除二級菜單或三級菜單,可使用父級ToolStripMenuItem對象的DropDownItems集合的Remove方法。5.3.2工具欄
工具欄控件(ToolStrip)是用來產(chǎn)生工具欄的控件,在工具箱中圖標(biāo)為“
”,在ToolStrip控件上可以顯示文本或圖像列表。ToolStrip控件中的各項與程序中的菜單項相對應(yīng),但是它直觀而快捷,便于用戶使用。圖5.16所示的是Word工具欄。圖5.16Word工具欄5.3.2工具欄
ToolStrip控件中可以包含按鈕(ToolStripButton)、組合框(ToolStripComboBox)、文本框(ToolStripTextBox)、進(jìn)度條(ToolStripProgressBar)和標(biāo)簽(ToolStripLabel)等對象,這些對象都屬于ToolStrip控件的Items集合屬性。按鈕是最常用的對象,改變按鈕的屬性就可以改變按鈕在工具欄中的外觀。它的常用屬性及說明如表5.15所示。屬性名說明Text按鈕顯示的文本Image按鈕中顯示的位圖TextImageRelation指定按鈕上的文本和圖像彼此之間的相對位置TollTipText按鈕的提示文本DisplayStyle按鈕的顯示方式,默認(rèn)為Image,僅顯示圖像表5.15工具欄中按鈕控件的常用屬性及說明5.3.3上下文菜單在Windows應(yīng)用程序中經(jīng)常會用到上下文快捷菜單(ContextMenu),在工具箱中圖標(biāo)為“
”。該菜單不同于固定在菜單欄中的主菜單,它是在窗體上面的浮動式菜單,通常在單擊鼠標(biāo)右鍵時顯示,顯示的位置取決于右擊時鼠標(biāo)指針?biāo)诘奈恢谩H鐖D5.17所示的是Word上下文菜單。圖5.17Word上下文菜單5.3.4狀態(tài)欄
Windows窗體的狀態(tài)欄(StatusStrip)通常顯示在窗口的底部,在工具箱中圖標(biāo)為“
”,應(yīng)用程序可通過StatusStrip控件在該區(qū)域顯示各種狀態(tài)信息。StatusStrip控件上可以有狀態(tài)欄面板,用于顯示指示狀態(tài)的文本或圖標(biāo),或一系列指示進(jìn)程正在執(zhí)行的動畫圖標(biāo)(如
MicrosoftWord指示正在保存文檔,如圖5.18所示)。例如,在鼠標(biāo)滾動到超級鏈接時,InternetExplorer使用狀態(tài)欄指示某個頁面的
URL。MicrosoftWord使用狀態(tài)欄提供有關(guān)頁位置、節(jié)位置和編輯模式(如改寫和修訂跟蹤)的信息。圖5.18Word正在保存文檔時的狀態(tài)欄5.3.4狀態(tài)欄
狀態(tài)條控件StatusStrip中可以包含ToolStripStatusLabel、ToolStripDropDownButton、ToolStripSplitButton和ToolStripProgressBar等對象,這些對象都屬于ToolStrip控件的Items集合屬性,Items集合屬性是狀態(tài)條控件StatusStrip的常用屬性。狀態(tài)條控件也有許多事件,一般情況下,不在狀態(tài)條的事件過程中編寫代碼,狀態(tài)條的主要作用是顯示系統(tǒng)信息的。通常在其他的過程中編寫代碼,通過實時改變狀態(tài)條中對象的Text屬性來顯示系統(tǒng)的信息。狀態(tài)條的常用屬性及說明見表5.16。屬性名說明Items用于設(shè)置狀態(tài)條中的各個面板對象Text用于設(shè)置狀態(tài)條控件要顯示的文本Dock用于設(shè)置狀態(tài)條在窗體上的位置Name用于設(shè)置狀態(tài)條的名稱表5.16StatusStrip控件的常用屬性及說明5.3.5綜合應(yīng)用
【例EX5_7】設(shè)計記事本。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX5_7”,從工具箱中拖曳1個“MenuStrip”、1個“ToolStrip”、1個“ContextMenuStrip”、1個“TextBox”和1個“StatusStrip”控件到窗體上。(2)設(shè)置控件與窗體屬性窗體和文本框控件的屬性設(shè)置如表5.17所示。其他控件屬性設(shè)置如下。類別名稱屬性設(shè)置值FormfmTxtText記事本TextBoxtextBox1DockFillMultilineTrueScrollBarsBothContextMenuStripcontextMenuStrip1表5.17屬性設(shè)置5.3.5綜合應(yīng)用①menuStrip1屬性設(shè)置。選中“menuStrip1”,在“請在此處鍵入”處輸入“文件(&F)”,則添加了“文件”菜單項,“&F”是用來定義該菜單項的助記符。按照如圖5.19所示分別添加其他菜單項及子菜單項。(a)文件菜單及子菜單(b)編輯菜單及子菜單(c)格式菜單及子菜單(d)查看菜單及子菜單(e)幫助菜單及子菜單圖5.19各種菜單5.3.5綜合應(yīng)用打開文件菜單中的子菜單項的“新建”屬性窗口,設(shè)置與菜單項關(guān)聯(lián)的快捷鍵“ShortcutKeys”屬性,如圖5.20所示。其他子菜單快捷鍵的設(shè)置類似。在格式菜單的子菜單的“自動換行”屬性窗口中,設(shè)置Checked屬性值為“true”。同樣,在查看菜單的子菜單的“狀態(tài)欄”屬性窗口中,設(shè)置Checked屬性值為“true”。圖5.20設(shè)置快捷鍵5.3.5綜合應(yīng)用②toolStrip1屬性設(shè)置。單擊“
”圖標(biāo)中的倒三角按鈕,在下拉列表中選擇“Button”選項,如圖5.21所示,或者直接單擊“
”圖標(biāo)添加“Button”,在新添加的“Button”屬性窗口中設(shè)置Text屬性值為“新建”,選中“Image”屬性,單擊“
”按鈕,在彈出的“選擇資源”對話框中單擊“導(dǎo)入”按鈕,如圖5.22所示,單擊“確定”按鈕完成“Image”屬性設(shè)置。按照此方法添加其他的工具按鈕,除“新建”外從左到右分別為“打開”、“保存”、“剪切”、“復(fù)制”、“粘貼”、“查找”和“替換”,完成后如圖5.25所示。
圖5.21添加Button圖5.22導(dǎo)入資源5.3.5綜合應(yīng)用③statuStrip1屬性設(shè)置。單擊“
”圖標(biāo)中的倒三角按鈕,在下拉列表中選擇“StatusLabel”選項,如圖5.23所示,或者直接單擊“
”圖標(biāo)添加“StatusLabel”,打開所添加的“toolStripStatusLabel1”屬性窗口,將其中的Text屬性值設(shè)置為空值。④contextMenuStrip1屬性設(shè)置。選中“contextMenuStrip1”,在“請在此處鍵入”處輸入“撤銷(&U)”,便添加了“撤銷”快捷菜單項,按照同樣的方法添加其他快捷菜單項,如圖5.24所示。
圖5.23選擇狀態(tài)欄選項
圖5.24設(shè)計后的快捷菜單5.3.5綜合應(yīng)用(3)添加代碼在窗體設(shè)計器中分別雙擊菜單欄中的“撤銷”、“剪切”、“復(fù)制”、“粘貼”、“刪除”菜單按鈕,并且添加文本框textBox1的“TextChanged”事件,在代碼編輯窗口中添加代碼,代碼如下所示。在事件窗口中分別為工具欄和上下文菜單添加“撤銷”、“剪切”、“復(fù)制”、“粘貼”和“刪除”事件并選擇事件執(zhí)行代碼。(4)運行程序按“Ctrl+F5”組合鍵運行程序,輸入文字,如圖5.25所示。圖5.25記事本5.4單文檔界面和多文檔界面5.4.1基于對話框的應(yīng)用程序基于對話框的應(yīng)用程序是所有應(yīng)用程序中最簡單的一種。它向用戶提供一個對話框,該對話框提供了所有的功能,如系統(tǒng)監(jiān)控程序。Windows任務(wù)管理器就是一個很好的例子,如圖5.26所示。這類應(yīng)用程序的用途比較單一,僅僅可以完成用戶輸入量非常少的特定任務(wù),或者專門處理某一類型的數(shù)據(jù)。圖5.26Windows任務(wù)管理器5.4.2單文檔界面單文檔(SDI)應(yīng)用程序是目前最為流行的應(yīng)用程序開發(fā)模式。單文檔窗體指的是在某一時刻,程序只能激活一個窗體。如圖5.27所示,當(dāng)單擊“窗體一”上的“顯示窗體二”按鈕后,彈出“窗體二”窗體,此時窗體一變灰,處于非激活狀態(tài),窗體二處于激活狀態(tài)。處于激活狀態(tài)圖5.27SDI窗體5.4.3多文檔界面1.創(chuàng)建MDI父窗體在多文檔界面(MDI)應(yīng)用程序中,MDI父窗體是包含MDI子窗口的窗體,在“Windows窗體設(shè)計器”中創(chuàng)建
MDI父窗體很容易。首先創(chuàng)建Windows應(yīng)用程序,在屬性窗口中,將IsMDIContainer屬性設(shè)置為true,將該窗體指定為子窗口的MDI容器。將MenuStrip組件從“工具箱”拖到窗體上,創(chuàng)建一個
Text屬性為“文件(&F)”的頂級菜單項,且它帶有“新建(&N)”和“關(guān)閉(&C)”子菜單項。再創(chuàng)建一個名為“窗口(&W)”的頂級菜單項。第1個菜單將在運行時創(chuàng)建并隱藏菜單項,而第2個菜單將跟蹤打開MDI子窗口。此時,已創(chuàng)建了一個
MDI父窗口。5.4.3多文檔界面2.創(chuàng)建MDI子窗體多文檔界面(MDI)應(yīng)用程序的基礎(chǔ)是MDI子窗體,因為它們是用戶交互的中心。在創(chuàng)建了MDI父窗體的基礎(chǔ)上,下面介紹如何創(chuàng)建并打開MDI子窗體。(1)按照如圖5.28所示創(chuàng)建一個MDI子窗體,注意將textBox控件從“工具箱”拖到窗體上。在屬性窗口中,將Anchor屬性設(shè)置為“Top,Left”,并將Dock屬性設(shè)置為“Fill”,這樣,即使調(diào)整MDI子窗體的大小,textBox控件也會完全填充該窗體的區(qū)域。(2)為“新建”菜單項創(chuàng)建
Click事件處理程序,單擊“新建”菜單項,創(chuàng)建新的
MDI子窗體。由事件處理程序處理NewMenuItem的
Click事件。
privatevoidNewMenuItem_Click(objectsender,EventArgse){childFormMDIChild=newchildForm(); MDIChild.MdiParent=this; //設(shè)置子窗體的父窗體MDIChild.Show(); //顯示一個新窗體}5.4.3多文檔界面程序運行結(jié)果如圖5.29所示。
圖5.28MDI子窗體
圖5.29MDI程序運行結(jié)果5.4.3多文檔界面3.確定活動的MDI子窗體一個MDI應(yīng)用程序可以有同一個子窗體的多個實例,通過ActiveMDIChild屬性,可以得到當(dāng)前具有焦點的子窗體或返回最近活動的子窗體。當(dāng)窗體上有多個控件時,通過ActiveMDIChild屬性,可以得到當(dāng)前活動子窗體上有焦點的控件。例如,確定活動的子窗體:
childFormactiveChild=this.ActiveMDIChild;
4.排列子窗體應(yīng)用程序通常包含對打開的
MDI子窗體進(jìn)行操作的菜單命令,如“平鋪”、“層疊”和“排列”。可以使用LayoutMdi方法和MdiLayout枚舉來重新排列
MDI父窗體中的子窗體。LayoutMdi()方法可使用4個不同MdiLayout枚舉值中的一個,這些枚舉值將子窗體顯示為層疊、水平平鋪或垂直平鋪,或者在MDI窗體下部顯示排列的子窗體圖標(biāo)。這些方法常用于菜單項的Click事件處理程序。這樣,選擇菜單項可在MDI子窗口上產(chǎn)生所需的效果。5.4.3多文檔界面為了排列子窗體,用
LayoutMdi()方法為
MDI父窗體設(shè)置
MdiLayout枚舉。其枚舉值如表5.18所示。成員名稱說明ArrangeIcons所有
MDI子圖標(biāo)均排列在
MDI父窗體的工作區(qū)內(nèi)Cascade所有
MDI子窗口均層疊在
MDI父窗體的工作區(qū)內(nèi)TileHorizontal所有
MDI子窗口均水平平鋪在
MDI父窗體的工作區(qū)內(nèi)TileVertical所有
MDI子窗口均垂直平鋪在
MDI父窗體的工作區(qū)內(nèi)表5.18MdiLayout枚舉值例如,對MDI父窗體(myForm1)的子窗體使用MdiLayout枚舉的“層疊”設(shè)置:
myForm1.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade);5.4.4綜合應(yīng)用【例EX5_8】將【例EX5_7】記事本改寫為MDI應(yīng)用程序。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX5_8”,從工具箱中拖曳1個“MenuStrip”到窗體上。(2)設(shè)置控件與窗體屬性將窗體Form1重新命名為“MDIForm”,將其“Text”和“IsMdiContainer”設(shè)置為“多文檔記事本”和“true”。按照如圖5.30所示設(shè)置菜單。將menuStrip1的“MdiWindowListItem”屬性設(shè)置為“窗口WToolStripMenuItem”。
圖5.30設(shè)置菜單5.4.4綜合應(yīng)用(3)添加現(xiàn)有項在解決方案資源管理器中右擊項目名“EX5_8”→“添加”→“現(xiàn)有項”,在彈出的“添加現(xiàn)有項”對話框中選擇“EX5_7”中的“Form1.cs”、“Form1.Designer.cs”和“Form1.resx”三項,如圖5.31所示,單擊“添加”按鈕完成添加。圖5.31“添加現(xiàn)有項”對話框5.4.4綜合應(yīng)用(4)添加代碼在窗體設(shè)計器中分別雙擊菜單欄中的“打開”和窗口菜單中的各個子菜單,引用命名空間“usingEX5_7;”,代碼如下。(5)運行程序按“Ctrl+F5”組合鍵運行程序,單擊“打開”菜單打開子窗體,結(jié)果如圖5.32所示。圖5.32多文檔記事本5.5通用對話框5.5.1消息對話框消息對話框是最簡單的一類對話框,用來顯示一些提示、警告等信息。在.NET框架中,使用MessageBox類來封裝消息對話框,當(dāng)不能創(chuàng)建MessageBox類實例時,只能調(diào)用其靜態(tài)成員方法Show來顯示消息對話框。例如,以下代碼彈出的對話框如圖5.33所示。
MessageBox.Show("注冊成功!");圖5.33只顯示內(nèi)容的消息對話框
5.5.1消息對話框當(dāng)Show方法只指定一個參數(shù)時,它表示要顯示的消息內(nèi)容,且只有一個“確定”按鈕。當(dāng)然,Show方法也可以指定第2個參數(shù),用來表示消息對話框的標(biāo)題內(nèi)容,還可以在第3個參數(shù)中指定要顯示的按鈕(MessageBoxButtons枚舉值),在第4個參數(shù)中指定消息對話框的圖標(biāo)(MessageBoxIcon枚舉值),在第5個參數(shù)中指定消息對話框的默認(rèn)按鈕(MessageBoxDefaultButton枚舉值)。所謂“默認(rèn)按鈕”是指在消息對話框中一開始就具有輸入焦點的按鈕,在標(biāo)題周圍有一個黑色虛框,這樣,用戶可直接通過按Enter鍵來選擇該按鈕。例如,以下代碼彈出的對話框如圖5.34所示。
MessageBox.Show("文件已經(jīng)修改,要保存此文件嗎?","提示",MessageBoxButtons.OKCancel, MessageBoxIcon.Information);圖5.34完整的消息對話框5.5.1消息對話框表5.19列出了MessageBoxButton、MessageBoxIcon和MessageBoxDefaultButton枚舉值。類別枚舉值說明MessageBoxButtonOK消息對話框包含“確定”按鈕OKCancel消息對話框包含“確定”和“取消”按鈕AbortRetryIgnore消息對話框包含“中止”、“重試”和“忽略”按鈕YesNoCancel消息對話框包含“是”、“否”和“取消”按鈕YesNo消息對話框包含“是”和“否”按鈕RetryCancel消息對話框包含“重試”和“取消”按鈕MessageBoxIconNone消息對話框未包含符號Hand、Error、Stop表示圖標(biāo)為
Question表示圖標(biāo)為
Exclamation、Warning表示圖標(biāo)為
Asterisk、Information表示圖標(biāo)為
MessageBoxDefaultButtonButton1消息對話框上的第一個按鈕是默認(rèn)按鈕Button2消息對話框上的第二個按鈕是默認(rèn)按鈕Button3消息對話框上的第三個按鈕是默認(rèn)按鈕表5.19消息對話框中的按鈕、圖標(biāo)和默認(rèn)按鈕枚舉值5.5.2文件對話框1.打開文件對話框OpenFileDialog對話框是一個選擇文件的組件,如圖5.35所示。該組件允許用戶選擇要打開的文件,指定組件的Filter屬性可以過濾文件類型。圖5.35打開文件對話框5.5.2文件對話框圖標(biāo)為“
”。OpenFileDialog組件的常用屬性、方法和事件及說明如表5.20所示。屬性/方法/事件說明AddExtension屬性獲取或設(shè)置一個值,該值指示如果用戶省略擴(kuò)展名,對話框是否自動在文件名中添加擴(kuò)展名DefaultExt屬性獲取或設(shè)置默認(rèn)文件擴(kuò)展名FileName屬性獲取或設(shè)置一個包含在文件對話框中選定的文件名的字符串FileNames屬性獲取對話框中所有選定文件的文件名FilterIndex屬性獲取或設(shè)置文件對話框中當(dāng)前選定篩選器的索引InitialDirectory屬性獲取或設(shè)置文件對話框顯示的初始目錄Multiselect屬性獲取或設(shè)置一個值,該值指示對話框是否允許選擇多個文件OpenFile方法打開用戶選定的具有只讀權(quán)限的文件。該文件由
FileName屬性指定ShowDialog方法運行通用對話框FileOk事件當(dāng)用戶單擊文件對話框中的“打開”或“保存”按鈕時發(fā)生表5.20OpenFileDialog常用屬性、方法和事件及說明5.5.2文件對話框2.保存文件對話框SaveFileDialog組件顯示一個預(yù)先配置的對話框,用戶可以使用該對話框?qū)⑽募4娴街付ǖ奈恢?,如圖5.36所示。圖5.36保存文件對話框5.5.2文件對話框圖標(biāo)為“
”。SaveFileDialog組件繼承了OpenFileDialog組件的大部分屬性、方法和事件,其常用屬性、方法和事件以說明如表5.21所示。屬性/方法/事件說明AddExtension屬性獲取或設(shè)置一個值,該值指示如果用戶省略擴(kuò)展名,對話框是否自動在文件名中添加擴(kuò)展名CreatePrompt屬性獲取或設(shè)置一個值,該值指示如果用戶指定不存在的文件,對話框是否提示用戶允許創(chuàng)建該文件OverwritePrompt屬性獲取或設(shè)置一個值,該值指示如果用戶指定的文件名已存在,SaveAs對話框是否顯示警告信息OpenFile方法打開用戶選定的具有讀/寫權(quán)限的文件FileOk事件當(dāng)用戶單擊文件對話框中的“打開”或“保存”按鈕時發(fā)生HelpRequest事件當(dāng)用戶單擊通用對話框中的“幫助”按鈕時發(fā)生Disposed事件添加事件處理程序以偵聽組件上的
Disposed事件表5.21SaveFileDialog常用屬性、方法和事件及說明5.5.3打印對話框PrintDialog組件是一個打印預(yù)設(shè)置的對話框,如圖5.37所示。該組件可以選擇打印機(jī),并設(shè)置打印機(jī)的屬性,可以指定打印范圍和打印份數(shù),還支持打印到文件,而不是從打印機(jī)中打印。圖5.37“打印”對話框5.5.3打印對話框圖標(biāo)為“
”。PrintDialog組件的常用屬性、方法和事件及說明如表5.22所示。屬性/方法/事件說明AllowCurrentPage屬性獲取或設(shè)置一個值,該值指示是否顯示“當(dāng)前頁”選項按鈕AllowPrintToFile屬性獲取或設(shè)置一個值,該值指示是否啟用“打印到文件”復(fù)選框AllowSelection屬性獲取或設(shè)置一個值,該值指示是否啟用“選擇”選項按鈕AllowSomePages屬性獲取或設(shè)置一個值,該值指示是否啟用“頁”選項按鈕Document屬性獲取或設(shè)置一個值,指示用于獲取
PrinterSettings的
PrintDocumentPrinterSettings屬性獲取或設(shè)置對話框修改的打印機(jī)設(shè)置PrintToFile屬性獲取或設(shè)置一個值,該值指示是否選中“打印到文件”復(fù)選框ShowNetwork屬性獲取或設(shè)置一個值,該
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度消防安全評估與咨詢服務(wù)合同3篇
- 2025年度高端裝備制造與出口總合同3篇
- 二零二五年度礦山地質(zhì)災(zāi)害防治合同匯編3篇
- 2024版大學(xué)學(xué)生宿舍樓物業(yè)承包合同
- 二零二五年飯店客房經(jīng)營權(quán)及客房用品定制合同3篇
- 2024環(huán)保技術(shù)研發(fā)合同成果轉(zhuǎn)化
- 2024物流公司與倉儲企業(yè)之間的貨物運輸合同
- 2024行政訴訟刑事上訴狀案件調(diào)解與和解合同2篇
- 2024年精簡版勞動協(xié)議樣本模板版B版
- 二零二五版山林林木種植與管護(hù)合同范本3篇
- 第2課《濟(jì)南的冬天》課件-2024-2025學(xué)年統(tǒng)編版語文七年級上冊
- 2024年水利工程高級工程師理論考試題庫(濃縮400題)
- 增強(qiáng)現(xiàn)實技術(shù)在藝術(shù)教育中的應(yīng)用
- TD/T 1060-2021 自然資源分等定級通則(正式版)
- 《創(chuàng)傷失血性休克中國急診專家共識(2023)》解讀
- 倉庫智能化建設(shè)方案
- 海外市場開拓計劃
- 供應(yīng)鏈組織架構(gòu)與職能設(shè)置
- 幼兒數(shù)學(xué)益智圖形連線題100題(含完整答案)
- 七上-動點、動角問題12道好題-解析
- 2024年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
評論
0/150
提交評論