版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第第8章章Windows窗體應(yīng)用程序設(shè)計(jì)窗體應(yīng)用程序設(shè)計(jì)28.1 Windows編程的基礎(chǔ)知識(shí)編程的基礎(chǔ)知識(shí) Windows窗體是制作標(biāo)準(zhǔn)Win32屏幕的一種更高級(jí)的方法,具有非常健全的功能。.NET Framework中的所有語言都使用Windows窗體來代替它們?cè)趫D形窗體中所使用的組件。在.NET下,Windows窗體為所有的語言提供了一套豐富的、統(tǒng)一的控件和繪圖功能,以及用于圖形和繪圖底層Windows服務(wù)的標(biāo)準(zhǔn)API。有了Windows窗體,任何圖形和屏幕函數(shù)就不再需要使用內(nèi)置的Windows圖形接口了。 Windows應(yīng)用程序是運(yùn)行在Windows操作系統(tǒng)中的單機(jī)程序或C/S結(jié)構(gòu)的
2、客戶端程序。包括兩方面: 1、 Windows編程接口和類庫 2、 Windows應(yīng)用程序的基本結(jié)構(gòu) 1 Windows編程接口和類庫 操作系統(tǒng)為了方便應(yīng)用程序設(shè)計(jì),一般都要提供一個(gè)函數(shù)庫,設(shè)計(jì)應(yīng)用程序的一些共用代碼都包含在這個(gè)庫中。程序員可以調(diào)用庫中函數(shù),以簡(jiǎn)化編程。 API MFC類庫 組件和組件庫 .Net FrameWork基礎(chǔ)類庫 2 Windows應(yīng)用程序的基本結(jié)構(gòu) Windows應(yīng)用程序和控制臺(tái)應(yīng)用程序的基本結(jié)構(gòu)類似,程序的執(zhí)行總是從Main()方法開始,主函數(shù)Main()必須在一個(gè)類中。但Windows應(yīng)用程序使用圖形界面,一般有一個(gè)窗口(Form),采用事件驅(qū)動(dòng)方式工作。 最
3、簡(jiǎn)單的最簡(jiǎn)單的WindowsWindows應(yīng)用程序如下:應(yīng)用程序如下:using System; /using System; /引入命名空間引入命名空間using System.Windows.Forms;using System.Windows.Forms;public class Form1:Form /public class Form1:Form /類定義類定義 static void Main() /static void Main() /主函數(shù)主函數(shù) Application.Run(new Form1(); Application.Run(new Form1(); (1 1) 最
4、簡(jiǎn)單的最簡(jiǎn)單的Windows應(yīng)用程序應(yīng)用程序 using System;using System.Windows.Forms;using System.Drawing;public class Form1:Form/構(gòu)造函數(shù) public Form1() this.Text=我的第一個(gè)程序; button1=new Button();/生成Button類對(duì)象 (2 2)窗體中增加按鈕)窗體中增加按鈕(Button)(Button)控件的方法:控件的方法: Button button1;/生成Button類引用變量 /修改按鈕位置 button1.Location=new Point(25,25
5、); /修改button1按鈕的標(biāo)題 button1.Text=“確定”; /button1_Click函數(shù)是按鈕單擊事件的單擊事件處理函數(shù) button1.Click+=new System.EventHandler(button1_Click); /按鈕增加到窗體中并顯示 this.Controls.Add(button1); (2 2)窗體中增加按鈕)窗體中增加按鈕(Button)(Button)控件的方法:控件的方法: static void Main() Application.Run(new Form1(); /下邊函數(shù)是單擊按鈕事件處理函數(shù) private void button
6、1_Click(object sender, EventArgs e) /單擊按鈕后執(zhí)行的語句 this.button1.Text=“單擊了我”; 在窗體中增加控件類的對(duì)象的步驟:v定義Button類變量button1v在構(gòu)造函數(shù)中用new生成Button類對(duì)象v在構(gòu)造函數(shù)中修改button1的屬性 v增加button1的事件處理函數(shù) 這些步驟對(duì)于增加任何控件都是相同的 結(jié)論:結(jié)論:3 用VS2005創(chuàng)建Windows應(yīng)用程序 【例】使用微軟VS2005創(chuàng)建Windows應(yīng)用程序的具體步驟如下:(1)運(yùn)行VS2005程序,單擊菜單“文件(F)|新建項(xiàng)目(P)”菜單項(xiàng),打開“新建項(xiàng)目”對(duì)話框如下
7、,單擊“確定”按鈕,創(chuàng)建項(xiàng)目。 單擊菜單單擊菜單“文件文件( (F F)|)|全部保存全部保存( (L L) )”菜單項(xiàng),菜單項(xiàng),打開打開“保存項(xiàng)目保存項(xiàng)目”對(duì)對(duì)話框如下,按圖中那樣填寫,第一項(xiàng)是項(xiàng)目名。話框如下,按圖中那樣填寫,第一項(xiàng)是項(xiàng)目名。 (2)單擊“確定”按鈕,保存解決方案的所有文件。打開如下對(duì)話框。解決方案包括一個(gè)項(xiàng)目,解決方案的所有文件都保存到WindowsApplication7文件夾下。在WindowsApplication7文件夾中下有1個(gè)文件夾WindowsApplication7和文件 WindowsApplication7.sln。打開WindowsApplicati
8、on7文件夾,可以看到有3個(gè)文件夾和5個(gè)文件。 (3)下邊在窗體中增加一個(gè)按鈕,并為按鈕增加單擊事件函數(shù)。打開工具箱窗口,如下圖。雙擊Button控件,Button控件將放到Form1窗體中。打開屬性窗口,修改屬性,打開事件窗口,增加事件。 工具箱窗口工具箱窗口 屬性窗口屬性窗口 事件窗口事件窗口 4 方案(Solution)和項(xiàng)目(Project) 一個(gè)應(yīng)用(Application)可能包括一個(gè)或多個(gè)可執(zhí)行程序,所有這些可執(zhí)行程序的集合叫做一個(gè)應(yīng)用解應(yīng)用解決方案決方案。 為了生成一個(gè)可執(zhí)行程序,可能需要有一個(gè)或多個(gè)文件,所有這些文件的集合叫一個(gè)項(xiàng)目項(xiàng)目,因此項(xiàng)目是為了創(chuàng)建一個(gè)可執(zhí)行程序所必需
9、的所有的文件的集合。而一個(gè)方案中可能包括多個(gè)項(xiàng)目。解決方案資源管理器窗口可以為我們顯示一個(gè)解決方案的樹形結(jié)構(gòu),樹形結(jié)構(gòu)中包含項(xiàng)目及項(xiàng)目中的文件。 各個(gè)文件夾和文件的用途如下:v bin文件夾 -保存編譯后的程序v obj文件夾 保存臨時(shí)文件v Properties文件夾 v Form1.cs 窗體文件-窗體代碼文件v Form1.Designer.cs 窗體設(shè)計(jì)文件v Program.CS 程序入口5 Win Forms程序文件夾及文件后綴名 PropertiesProperties文件夾文件夾 定義你程序集的屬性 項(xiàng)目屬性文件夾 一般只有一個(gè) AssemblyInfo.cs 類文件,用于保存
10、程序集的信息,如名稱,版本等,這些信息一般與項(xiàng)目屬性面板中的數(shù)據(jù)對(duì)應(yīng),不需要手動(dòng)編寫 BinBin文件夾文件夾 目錄用來保存項(xiàng)目生成后程序集,它有Debug和Release兩個(gè)版本,分別對(duì)應(yīng)的文件夾為bin/Debug和bin/Release,這個(gè)文件夾是默認(rèn)的輸出路徑,我們可以通過:項(xiàng)目屬性配置屬性輸出路徑來修改。 文件夾文件夾 ObjObj文件夾文件夾 目錄是用來保存每個(gè)模塊的編譯結(jié)果,在.NET中,編譯是分模塊進(jìn)行的,編譯整個(gè)完成后會(huì)合并為一個(gè).DLL或.EXE保存到bin目錄下。因?yàn)槊看尉幾g時(shí)默認(rèn)都是采用增量編譯,即只重新編譯改變了的模塊,obj保存每個(gè)模塊的編譯結(jié)果,用來加快編譯速度
11、。是否采用增量編譯,可以通過:項(xiàng)目屬性配置屬性高級(jí)增量編譯來設(shè)置。.sln 解決方案文件,為解決方案資源管理器提供顯解決方案文件,為解決方案資源管理器提供顯示管理文件的圖形接口所需的信息。示管理文件的圖形接口所需的信息。 .csproj 項(xiàng)目文件,創(chuàng)建應(yīng)用程序所需的引用、數(shù)據(jù)連項(xiàng)目文件,創(chuàng)建應(yīng)用程序所需的引用、數(shù)據(jù)連接、文件夾和文件的信息。接、文件夾和文件的信息。 .cs 類模塊代碼文件。業(yè)務(wù)邏輯處理層的代碼。類模塊代碼文件。業(yè)務(wù)邏輯處理層的代碼。文件文件designer.cs 是窗體設(shè)計(jì)器生成的代碼文件,作用是對(duì)窗體上 的 控 件 做 初 始 化 工 作 ( 在 函 數(shù)InitializeC
12、omponent()中)VS2003以前都把這部分代碼放到窗體的cs文件中,由于這部分代碼一般不用手工修改,在VS2005以后把它單獨(dú)分離出來形成一個(gè)designer.cs文件與窗體對(duì)應(yīng)。這樣cs文件中剩下的代碼都是與程序功能相關(guān)性較高的代碼利于維護(hù)。Form1.Designer.cs 文件:文件:namespace Proj8_1 partial class Form1 / /必需的設(shè)計(jì)器變量。必需的設(shè)計(jì)器變量。 / private System.ComponentModel.IContainer components = null; / /清理所有正在使用的資源。清理所有正在使用的資源。
13、/ /如果應(yīng)釋放托管資源,為如果應(yīng)釋放托管資源,為true;/否則為否則為false。 protected override void Dispose(bool disposing)/重寫基類重寫基類Dispose()方法方法 if (disposing & (components != null) components.Dispose(); base.Dispose(disposing); /調(diào)用基類的調(diào)用基類的Dispose()方法方法 #region Windows 窗體設(shè)計(jì)器生成的代碼窗體設(shè)計(jì)器生成的代碼 / /設(shè)計(jì)器支持所需的方法設(shè)計(jì)器支持所需的方法 - 不要不要 /使用代碼
14、編輯器修改此方法的內(nèi)容。使用代碼編輯器修改此方法的內(nèi)容。 / private void InitializeComponent()/初始化方法初始化方法 this.button1 = new System.Windows.Forms.button(); this.button2 = new System.Windows.Forms.button(); this.SuspendLayout(); / button1 this.button1.Font = new System.Drawing.Font(宋體宋體, 9F, System.Drawing.FontStyle.Bold, System
15、.Drawing.GraphicsUnit.Point, (byte)(134); this.button1.Location = new System.Drawing.Point(28, 21); this.button1.Name = button1; this.button1.Size = new System.Drawing.Size(117, 33); this.button1.TabIndex = 0; this.button1.Text = 調(diào)用模式窗體調(diào)用模式窗體; this.button1.UseVisualStyleBackColor = true; this.button
16、1.Click += new System.EventHandler(this.button1_Click); / button2 this.button2.Font = new System.Drawing.Font(宋體宋體, 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, (byte)(134); this.button2.Location = new System.Drawing.Point(28, 69); this.button2.Name = button2; this.button2.S
17、ize = new System.Drawing.Size(117, 33); this.button2.TabIndex = 1; this.button2.Text = 調(diào)用無模式窗體調(diào)用無模式窗體; this.button2.UseVisualStyleBackColor = true; this.button2.Click += new System.EventHandler(this.button2_Click);/ Form1 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMo
18、de = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(169, 128); this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.Name = Form1; this.StartPosition =System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = Form1; this.ResumeLayout(false)
19、;/ / STAThreadSTAThread是一種線程模型,用在程序的入口方法上(在是一種線程模型,用在程序的入口方法上(在C#C#和和VB.NETVB.NET里是里是Main()Main()方法),指示應(yīng)用程序的默認(rèn)線程模型是單線程單元方法),指示應(yīng)用程序的默認(rèn)線程模型是單線程單元 (STA)(STA)。是是STASTA。 STAThreadSTAThread static void Main()static void Main() /程序運(yùn)行在程序運(yùn)行在XPXP環(huán)境中能自動(dòng)應(yīng)用環(huán)境中能自動(dòng)應(yīng)用XPXP的主題樣式的主題樣式 Application.EnableVisualStyles();
20、Application.EnableVisualStyles(); / /使用使用GDIGDI還是,還是,falsefalse是是 GDI+ GDI+ ,truetrue是是 GDIGDI Application.SetCompatibleTextRenderingDefault(Application.SetCompatibleTextRenderingDefault(false);false); / /運(yùn)行啟動(dòng)窗體運(yùn)行啟動(dòng)窗體 Application.Run(Application.Run(new new Form1();Form1(); Program.CS1、為什么要使用窗體、為什么要
21、使用窗體簡(jiǎn)單強(qiáng)大方便靈活8.2 Windows窗體概述窗體概述2 什么是窗體什么是窗體 Windows 操作系統(tǒng)中,處處是窗體3、怎樣創(chuàng)建、怎樣創(chuàng)建 Windows 程序程序在 VS 中創(chuàng)建 Windows 應(yīng)用程序的步驟:1、打開 VS 2、新建項(xiàng)目3、項(xiàng)目類型:Visual C# 項(xiàng)目4、模板:Windows 應(yīng)用程序4、認(rèn)識(shí)、認(rèn)識(shí) WinForms項(xiàng)目名稱項(xiàng)目名稱主程序文件,主程序文件,包含包含Main方法方法我們編寫代碼的文件我們編寫代碼的文件解決方案名稱解決方案名稱窗體設(shè)計(jì)器代碼文件,窗體設(shè)計(jì)器代碼文件,代碼為代碼為VS自動(dòng)生成自動(dòng)生成5、Main 方法方法 位于 Program.c
22、s 文件 Windows程序的入口/ Program.cs namespace MyForm static class Program . static void Main( ) Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(); Main 方法方法,程序的入口程序的入口VS 自動(dòng)生成自動(dòng)生成一般不需要理會(huì)一般不需要理會(huì)6、進(jìn)一步認(rèn)識(shí)窗體文件、進(jìn)一步認(rèn)識(shí)窗體文件 WinForms 窗體有兩種編輯窗口:窗體設(shè)計(jì)器窗口
23、窗體設(shè)計(jì)器窗口窗體代碼編輯窗口窗體代碼編輯窗口7、為什么使用、為什么使用partial具有雙鑰匙的密碼箱具有雙鑰匙的密碼箱 第一把鑰匙第一把鑰匙 第二把鑰匙第二把鑰匙 為了安全,兩把鑰匙分開放置為了安全,兩把鑰匙分開放置 只有兩把鑰匙同時(shí)使用才能打開密碼箱只有兩把鑰匙同時(shí)使用才能打開密碼箱 用用 partial 將將同一個(gè)窗體同一個(gè)窗體的代碼分開放在的代碼分開放在兩個(gè)文件兩個(gè)文件中:中:一個(gè)存放一個(gè)存放 VS 自動(dòng)生成的代碼自動(dòng)生成的代碼一個(gè)存放我們自己編寫的代碼一個(gè)存放我們自己編寫的代碼 程序員編寫的代碼程序員編寫的代碼 VS自動(dòng)生成的代碼自動(dòng)生成的代碼 / Form1.Designer.c
24、snamespace MyForm partial class Form1 / private void InitializeComponent() / VS自動(dòng)生成的代碼自動(dòng)生成的代碼 this.ShowInTaskbar = false; this.Name = Form1; this.Text = Form1; this.TopMost = true; 運(yùn)行時(shí)運(yùn)行時(shí)合到一起合到一起組成一個(gè)窗體文件組成一個(gè)窗體文件8、怎樣使用、怎樣使用partial/ Form1.cs namespace MyForm public partial class Form1 : Form public Fo
25、rm1() InitializeComponent(); / 我們編寫的代碼我們編寫的代碼 構(gòu)造函數(shù)構(gòu)造函數(shù)做一些初始化的工作做一些初始化的工作編譯器自動(dòng)調(diào)用編譯器自動(dòng)調(diào)用9、認(rèn)識(shí)窗體類、認(rèn)識(shí)窗體類/ Form1.cs namespace MyForm public partial class Form1 : Form public Form1() InitializeComponent(); 冒號(hào)表示繼承冒號(hào)表示繼承Form類定義了窗體的基本屬類定義了窗體的基本屬性和行為性和行為我們創(chuàng)建的窗體都繼承自我們創(chuàng)建的窗體都繼承自Form類類Form1具有相應(yīng)的屬性和行具有相應(yīng)的屬性和行為為 For
26、m 類:.NET 預(yù)定義的窗體類 Form1 繼承自 Form10、窗體的重要屬性、窗體的重要屬性Name :窗體對(duì)象的名字,類似于變量的名字窗體對(duì)象的名字,類似于變量的名字 BackColor :窗體的背景色窗體的背景色 ShowInTaskBar :設(shè)置窗體是否出現(xiàn)在任務(wù)欄設(shè)置窗體是否出現(xiàn)在任務(wù)欄 StartPosition :窗體第一次出現(xiàn)時(shí)的位置:窗體第一次出現(xiàn)時(shí)的位置 Text :窗體標(biāo)題欄顯示的文字窗體標(biāo)題欄顯示的文字 TopMost :設(shè)置窗體是否為最頂端的窗體設(shè)置窗體是否為最頂端的窗體 WindowState :窗體出現(xiàn)時(shí)最初的狀態(tài)(正常、最大化、最小化)窗體出現(xiàn)時(shí)最初的狀態(tài)(
27、正常、最大化、最小化) 11、為什么使用事件、為什么使用事件 Windows 系統(tǒng)中處處是事件: 鼠標(biāo)按下、鼠標(biāo)釋放、鍵盤鍵按下 Windows 系統(tǒng)通過事件處理來響應(yīng)用戶的請(qǐng)求顯示開始菜單顯示開始菜單 我的電腦我的電腦窗口打開窗口打開事件觸發(fā)事件觸發(fā) 事件響應(yīng)的結(jié)果事件響應(yīng)的結(jié)果 單擊單擊雙擊雙擊12、事件驅(qū)動(dòng)、事件驅(qū)動(dòng) Windows 通過隨時(shí)響應(yīng)用戶觸發(fā)的事件做出相應(yīng)的響應(yīng)事件驅(qū)動(dòng)機(jī)制我們需要做的:針對(duì)我們感興趣的事件,編寫相應(yīng)的事件處理程序 WinForms 應(yīng)用程序也是事件驅(qū)動(dòng)的13、編寫事件處理程序、編寫事件處理程序 編寫事件處理程序的步驟:1、選中控件 2、在“屬性”窗口中單擊3
28、、找到事件4、生成事件處理方法5、編寫處理代碼事件處理程序分析事件處理程序分析/ 窗體的鼠標(biāo)移動(dòng)事件處理程序窗體的鼠標(biāo)移動(dòng)事件處理程序private void Form1_MouseMove(object sender, MouseEventArgs e ) this.Text = String.Format(捕捉到鼠標(biāo)了捕捉到鼠標(biāo)了!(0,1), e.X,e.Y ); 示例中添加的事件處理程序:this關(guān)鍵字關(guān)鍵字代表窗體本身代表窗體本身鼠標(biāo)的橫縱坐標(biāo)鼠標(biāo)的橫縱坐標(biāo)窗體標(biāo)題欄顯窗體標(biāo)題欄顯示的文字示的文字鼠標(biāo)事件參數(shù)鼠標(biāo)事件參數(shù)事件源事件源14、窗體的重要事件、窗體的重要事件 Load :窗
29、體加載事件 MouseClick :鼠標(biāo)單擊事件 MouseDoubleClick :鼠標(biāo)雙擊事件 MouseMove :鼠標(biāo)移動(dòng)事件 KeyDown :鍵盤按下事件 KeyUp :鍵盤釋放事件 窗體有哪些事件?窗體上各事件的引發(fā)順序窗體上各事件的引發(fā)順序當(dāng)一個(gè)窗體啟動(dòng)時(shí),執(zhí)行事件過程的次序如下:當(dāng)一個(gè)窗體啟動(dòng)時(shí),執(zhí)行事件過程的次序如下:(1)本窗體上的)本窗體上的Load事件過程。事件過程。(2)本窗體上的)本窗體上的Activated事件過程。事件過程。(3)本窗體上的其他)本窗體上的其他Form級(jí)事件過程。級(jí)事件過程。(4)本窗體上包含對(duì)象的相應(yīng)事件過程。)本窗體上包含對(duì)象的相應(yīng)事件過程
30、。一個(gè)窗體被卸載時(shí),執(zhí)行事件過程的次序如下:一個(gè)窗體被卸載時(shí),執(zhí)行事件過程的次序如下:(1)本窗體上的)本窗體上的Closing事件過程。事件過程。(2)本窗體上的)本窗體上的FormClosing事件過程。事件過程。(3)本窗體上的)本窗體上的Closed事件過程。事件過程。(4)本窗體上的)本窗體上的FormClosed事件過程。事件過程。 當(dāng)鼠標(biāo)在窗體上點(diǎn)擊時(shí),窗體的背景色改變: 如果是紅色,變成黃色 如果是黃色,變成綠色 否則變成紅色提示:提示:處理窗體的處理窗體的 MouseClick 事件事件 利用利用Color類得到某種顏色:類得到某種顏色: 紅色紅色Color.Red 綠色綠色
31、Color.Green 黃色黃色Color.Yellow窗體的背景色:窗體的背景色:this.BackColor判斷背景色:判斷背景色:if (this.BackColor = Color.Red)例例/ 鼠標(biāo)單擊事件鼠標(biāo)單擊事件private void Form1_MouseClick (object sender, MouseEventArgs e) if (this.BackColor = Color.Red) this.BackColor = Color.Yellow; else if (this.BackColor = Color.Yellow) this.BackColor = C
32、olor.Green; else this.BackColor = Color.Red; 15、窗體顯示及分類、窗體顯示及分類1、啟動(dòng)窗體將自動(dòng)顯示。、啟動(dòng)窗體將自動(dòng)顯示。2、顯示一個(gè)非啟動(dòng)窗體,即由一個(gè)窗體調(diào)用顯示另一個(gè)窗體需要?jiǎng)?chuàng)、顯示一個(gè)非啟動(dòng)窗體,即由一個(gè)窗體調(diào)用顯示另一個(gè)窗體需要?jiǎng)?chuàng)建另一個(gè)窗體的對(duì)象,再用建另一個(gè)窗體的對(duì)象,再用Show()或或ShowDialog()方法顯示。方法顯示。 Form1 f=new Form1(); /創(chuàng)建窗體的對(duì)象創(chuàng)建窗體的對(duì)象 f. Show();/非模式窗體非模式窗體或或 f.ShowDialog();/模式窗體模式窗體窗體顯示窗體顯示1 1 單文檔
33、窗體單文檔窗體 單文檔窗體一次只能打開一個(gè)活動(dòng)窗體,窗體間沒有包含關(guān)系。(1)窗體間的跳轉(zhuǎn) 步驟:1、定義窗體對(duì)象2、顯示窗體窗體分類窗體分類定義窗體對(duì)象:定義窗體對(duì)象:被調(diào)用的窗體類名被調(diào)用的窗體類名 窗體對(duì)象窗體對(duì)象 = new 被調(diào)用的窗體類名被調(diào)用的窗體類名( );顯示窗體:顯示窗體:窗體對(duì)象窗體對(duì)象 . Show( );例:例:Form1 f1=new Form1();f1.Show();例:例:/非模式窗體非模式窗體Form1 f1=new Form1();f1.Show();(2)模式窗體模式窗體和非模式窗體非模式窗體 模式窗體指不關(guān)閉當(dāng)前窗就不能切換到其它窗體。窗體顯示用Sho
34、wDialog()方法。 非模式窗體則可以在窗體間自由切換。窗體顯示用Show ()方法。例:例:模式窗體模式窗體Form1 f1=new Form1();f1. ShowDialog();(1) 什么是什么是MDI在在 MDI 應(yīng)用程序中可以應(yīng)用程序中可以同時(shí)同時(shí)打開打開多個(gè)多個(gè)文件文件 父窗口父窗口子窗口子窗口2 多文檔窗體(MDI)(2 ) 創(chuàng)建創(chuàng)建MDI示例示例(3) 怎樣創(chuàng)建怎樣創(chuàng)建MDI創(chuàng)建 MDI 的步驟: 1、設(shè)置父窗體的 IsMDIContainer 屬性 2、設(shè)置子窗體的 MdiParent 屬性ChildForm childForm = new ChildForm();
35、childForm.MdiParent = this; childForm.Show(); 創(chuàng)建子窗體的對(duì)象創(chuàng)建子窗體的對(duì)象設(shè)置子窗體的父窗體設(shè)置子窗體的父窗體顯示子窗體顯示子窗體建立子窗體窗口列表步驟: 1、在父窗體中添加菜單條 2、添加 “窗口”菜單 3、設(shè)置菜單控件的 MdiWindowListItem 屬性 MDI中可以使用模式中可以使用模式窗體窗體嗎?嗎?528.3 Windows窗體控件概述窗體控件概述 Windows窗體是制作標(biāo)準(zhǔn)Win32屏幕的一種更高級(jí)的方法,具有非常健全的功能。.NET Framework中的所有語言都使用Windows窗體來代替它們?cè)趫D形窗體中所使用的組件
36、。在.NET下,Windows窗體為所有的語言提供了一套豐富的、統(tǒng)一的控件和繪圖功能,以及用于圖形和繪圖底層Windows服務(wù)的標(biāo)準(zhǔn)API。有了Windows窗體,任何圖形和屏幕函數(shù)就不再需要使用內(nèi)置的Windows圖形接口了。Label :標(biāo)簽標(biāo)簽 lblTextBox :文本框文本框 txtListBox :列表框列表框 lstComboBox :組合框組合框 cboGroupBox :分組框分組框grpPanel :面板面板pnlRadioButton :?jiǎn)芜x按鈕單選按鈕rdoButton : 按鈕按鈕btn1、常見窗體控件及命名習(xí)慣、常見窗體控件及命名習(xí)慣2、 常用基本屬性常用基本屬性
37、 1) Name:表示控件的名稱。 2) Enabled:表示控件是否可以對(duì)用戶交互作出響應(yīng)。 3) Font:表示控件中顯示文字的字體格式,包括字體名稱、字號(hào)以及是否以斜體、加粗和下劃線顯示。 4) BackColor:表示控件的背景色。 5) ForeColor:表示控件的前景色。 6) Image:表示控件上顯示的圖像。 7) Location:這是一個(gè)復(fù)合屬性,表示控件的左上角相對(duì)于其容器的左上角的坐標(biāo)。 8) Size:這是一個(gè)復(fù)合屬性,表示控件的高度和寬度。 9) Visible:表示是否顯示該控件。 3、 常用事件常用事件 1) Click事件:?jiǎn)螕粼摽丶r(shí)觸發(fā)。 2) Mous
38、eEnter事件:鼠標(biāo)進(jìn)入控件區(qū)域內(nèi)時(shí)觸發(fā)。 3) MouseDown事件:在控件區(qū)域內(nèi)按下鼠標(biāo)鍵時(shí)觸發(fā)。 4) MouseLeave事件:鼠標(biāo)離開控件區(qū)域時(shí)觸發(fā)。 5)KeyPress事件:當(dāng)用戶按下又放開某個(gè)ASCII字符鍵時(shí) ,會(huì)引發(fā)當(dāng)前擁有焦點(diǎn)對(duì)象的KeyPress事件。 6) KeyDown和KeyUp事件: KeyDown和KeyUp事件發(fā)生在用戶按下鍵盤上某鍵時(shí),通??删帉懫涫录a以判斷用戶按鍵的情況。4、控件焦點(diǎn)與、控件焦點(diǎn)與Tab鍵次序鍵次序焦點(diǎn)(焦點(diǎn)(Focus)是指當(dāng)前處于活動(dòng)狀態(tài)的窗體或控件。)是指當(dāng)前處于活動(dòng)狀態(tài)的窗體或控件。 要將焦點(diǎn)移到當(dāng)前窗體中的要將焦點(diǎn)移到當(dāng)
39、前窗體中的textBox1文本框,可以文本框,可以使用以下命令:使用以下命令:textBox1.Focus();1 1 ButtonButton控件控件使用方法:使用方法:1 1)從工具欄拖放一個(gè))從工具欄拖放一個(gè)buttonbutton到窗體到窗體常用:常用: 1 1TextText屬性:顯示控件文本信息屬性:顯示控件文本信息例如:例如:this.button1.Text=this.button1.Text=確定確定; 2 2ClickClick事件:?jiǎn)螕羰髽?biāo)左鍵時(shí)觸發(fā)。事件:?jiǎn)螕羰髽?biāo)左鍵時(shí)觸發(fā)。例如:例如:private void button1_Click(object sender,p
40、rivate void button1_Click(object sender, System.EventArgs e) System.EventArgs e) MessageBox.Show(this,“MessageBox.Show(this,“你點(diǎn)擊了你點(diǎn)擊了 確定確定 按鈕。按鈕?!? , “提示信息提示信息”, ,MessageBoxButtons.OK,MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBoxIcon.Information); 8.3 基本控件基本控件參數(shù)的含義: (1)object sender:
41、代表發(fā)出事件的對(duì)象,此處指button1。使用時(shí)可以直接用button1,也可以像下面形式: Button button=(Button)sender; (2)System.EventArgs e:封裝了事件的信息 3. MouseEnter事件:鼠標(biāo)進(jìn)入按鈕區(qū)域時(shí)觸發(fā)。例如:private void button1_MouseEnter(object sender,System.EventArgs e) /顏色在System.Drawing名稱空間下this.button1.BackColor=Color.Red; 4. MouseLeave事件:鼠標(biāo)離開按鈕區(qū)域時(shí)觸發(fā)。例如:private
42、 void button1_MouseLeave(object sender, System.EventArgs e)this.button1.BackColor=SystemColors.Control; 2 2 TextBoxTextBox控件控件/ /RichTextBoxRichTextBox控件控件常用:常用: 1 1TextText屬性:表示文本框中的當(dāng)前文本。屬性:表示文本框中的當(dāng)前文本。 例如:例如:this.textBox1.Text=abcd;this.textBox1.Text=abcd; 2 2MultilineMultiline屬性:表示是否可以包含多行內(nèi)容。屬性:表
43、示是否可以包含多行內(nèi)容。 3 3MaxLengthMaxLength屬性:表示用戶可以在文本框控件中最多鍵屬性:表示用戶可以在文本框控件中最多鍵 入的字符數(shù)入的字符數(shù)。 4 4 PasswordCharPasswordChar屬性:用于屏蔽在單行文本框控件中輸入的的密碼字屬性:用于屏蔽在單行文本框控件中輸入的的密碼字符符 。 5 5、 TextChangedTextChanged事件:更改事件:更改TextText屬性值時(shí)觸發(fā)。屬性值時(shí)觸發(fā)。例如:例如:private void textBox1_TextChanged(object senderprivate void textBox1_Te
44、xtChanged(object sender,System.EventArgs e)System.EventArgs e) this.textBox2.Text=this.textBox1.Text;this.textBox2.Text=this.textBox1.Text; /標(biāo)題為求積的按鈕的單擊事件處理函數(shù)如下:private void button1_Click(object sender,EventArgs e) float ss,ee;ss=Convert.ToSingle(textBox1.Text);ee=Convert.ToSingle(textBox2.Text);tex
45、tBox3.Text=Convert.ToString(ss*ee); /標(biāo)題為“清空”的按鈕的單擊事件處理函數(shù)如下: private void button2_Click(object sender, EventArgs e) textBox1.Text=;textBox2.Text=;textBox3.Text=;6 6、 KeyPressKeyPress事件:輸入時(shí)按鍵觸發(fā)。一般用于監(jiān)控鍵盤的輸入字符,事件:輸入時(shí)按鍵觸發(fā)。一般用于監(jiān)控鍵盤的輸入字符,可以用來限制鍵盤輸入字符,如數(shù)字,可打印字符等??梢杂脕硐拗奇I盤輸入字符,如數(shù)字,可打印字符等。 private void textBox
46、1_KeyPress(object sender, KeyPressEventArgs e) /限制鍵盤輸入 只能輸入數(shù)字和退格鍵 if (!(e.KeyChar = 48 & e.KeyChar = 58) | (e.KeyChar = 8) e.Handled = true; 例例3 Label控件和LinkLabel控件 Label控件通常用于提供控件或窗體的描述性文字,以便為用戶提供有幫助作用的信息。 1. Label控件常用的基本屬性 Text屬性:表示顯示的文本內(nèi)容。 2. 操作示例 LinkLabel控件與Label控件非常相似,不同的是它可以顯示超級(jí)鏈接。當(dāng)用戶單擊Li
47、nkLabel控件時(shí),會(huì)觸發(fā)LinkClicked事件,可以在LinkClicked事件中編寫代碼鏈接到指定的網(wǎng)頁。 4 ImageList控件 ImageList控件提供一個(gè)集合,可以用于存儲(chǔ)在窗體的其他控件中使用圖像。可以在圖像列表中存儲(chǔ)任意大小的圖像,但在每個(gè)控件中,每個(gè)圖像的大小必須相同。對(duì)于后面要介紹的ListView控件,則需要兩個(gè)ImageList控件才能顯示大圖像和小圖像。 ImageList是一個(gè)不在運(yùn)行期間顯示它本身的控件。在把它拖放到正在開發(fā)的窗體上時(shí),它并不是放在窗體本身上,而是在窗體的下面,其中包含該控件所有的組件。這個(gè)功能可以防止不是用戶界面一部分的控件遮擋窗體設(shè)計(jì)
48、器。這個(gè)控件的處理方式與其他控件相同,但不能移動(dòng)它。66 PictureBox控件是用于顯示圖像的,它與ImageList控件不同,在Windows窗體運(yùn)行時(shí),它所使用的圖像將被顯示出來。67屬性屬性說明說明Image該屬性用于設(shè)置PictureBox控件要使用的圖像SizeMode該屬性用于設(shè)置要顯示圖像的顯示方式,可以取如下所示的值:Normal(默認(rèn)值,用于將圖像放在PictureBox控件的左上角)、StretchImage(用于調(diào)整圖像大小以適應(yīng)PictureBox控件的顯示)、AutoSize(自動(dòng)調(diào)整PictureBox控件的大小以便能容納圖像)或CenterImage(圖像位于
49、PictureBox控件的中間位置)Region獲取或設(shè)置與控件關(guān)聯(lián)的窗口區(qū)域ClientSize該屬性用于設(shè)置PictureBox控件的顯示區(qū)域大小ErrorImage該屬性用于獲取或設(shè)置圖像在加載過程中出錯(cuò)時(shí),或者圖像加載取消時(shí)要顯示的圖像ImageLocation該屬性用于獲取或設(shè)置要在PictureBox控件中顯示的圖像路徑。該屬性使得PictureBox控件顯示一個(gè)來自Internet上圖像的任務(wù)變得十分簡(jiǎn)單Site該屬性用于獲取或設(shè)置控件的站點(diǎn)5 5 PictureBoxPictureBox控件控件常用屬性有: 1 Image:在PictureBox中顯示的圖像。 2 SizeMo
50、de:圖片在控件中的顯示方式。 其屬性有: AutoSize:調(diào)整控件PictureBox大小,使其等于所包含 的圖像大小。 CenterImage:如果控件PictureBox比圖像大,則圖像將 居中顯示。如果圖像比控件大,則圖片將居于控件中心,而外邊緣將被剪裁掉。 Normal:圖像被置于控件的左上角。如果圖像控件大, 則超出部分被剪裁掉。 StretchImage:控件中的圖像被拉伸或收縮,以適合控 件的大小。 屬性屬性說明說明Image該屬性用于設(shè)置PictureBox控件要使用的圖像SizeMode該屬性用于設(shè)置要顯示圖像的顯示方式,可以取如下所示的值:Normal(默認(rèn)值,用于將圖
51、像放在PictureBox控件的左上角)、StretchImage(用于調(diào)整圖像大小以適應(yīng)PictureBox控件的顯示)、AutoSize(自動(dòng)調(diào)整PictureBox控件的大小以便能容納圖像)或CenterImage(圖像位于PictureBox控件的中間位置)Region獲取或設(shè)置與控件關(guān)聯(lián)的窗口區(qū)域ClientSize該屬性用于設(shè)置PictureBox控件的顯示區(qū)域大小ErrorImage該屬性用于獲取或設(shè)置圖像在加載過程中出錯(cuò)時(shí),或者圖像加載取消時(shí)要顯示的圖像ImageLocation該屬性用于獲取或設(shè)置要在PictureBox控件中顯示的圖像路徑。該屬性使得PictureBox控件
52、顯示一個(gè)來自Internet上圖像的任務(wù)變得十分簡(jiǎn)單Site該屬性用于獲取或設(shè)置控件的站點(diǎn)例:第一步:向窗體上拖放一個(gè)PictureBox控件,一個(gè)Label控件, 分別調(diào)整為適當(dāng)大小。第二步:設(shè)置pictureBox1的Image屬性,將一個(gè)圖片放入控件 內(nèi)。然后修改SizeMode屬性,觀察效果。第三步:添加下列事件:private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)this.label1.Text=string.Format(“鼠標(biāo)在PictureBox中的 位置
53、:x=0,y=1,e.X,e.Y);第四步:運(yùn)行,在圖片內(nèi)移動(dòng)鼠標(biāo),觀察結(jié)果。 6 RadioButton控件 單選按鈕是以他們所在的容器劃分組的,直接在Form上放置的單選按鈕將自動(dòng)成為一組,這時(shí)Form就是容器,當(dāng)選中容器中的一個(gè)單選按鈕時(shí),其他的將自動(dòng)撤銷選中。 如果要在一個(gè)Form上創(chuàng)建多個(gè)單選按鈕組,則需要使用GroupBox或者Panel控件作為容器。常用:(1)Text屬性(2)Checked屬性(3)CheckedChanged事件第一步:設(shè)計(jì)窗體。 例第二步第二步:添加下列代碼:private void radioButton_CheckedChanged(object se
54、nder, System.EventArgs e)RadioButton check=(RadioButton)sender;if(check.Checked)this.textBox1.Text=check.Text;第三步第三步:將三個(gè)RadioButton控件的CheckedChanged觸發(fā)事件均選擇為radioButton_CheckedChanged。第四步第四步:運(yùn)行,觀察結(jié)果。 一般在下列情況下使用復(fù)選框: 響應(yīng)用戶對(duì)復(fù)選框的選擇,動(dòng)態(tài)改變界面上其它控件的狀態(tài)。 訪問復(fù)選框的狀態(tài),執(zhí)行不同的操作。 常用:(1)Text屬性:表示與復(fù)選框控件關(guān)聯(lián)的文本。 (2)Checked屬性
55、:表示復(fù)選框是否處于選中狀態(tài)。 (3)CheckedChanged事件:表示當(dāng)Checked屬性值更改時(shí)觸發(fā)的操作。 7 CheckBox控件控件例:例:第二步第二步:在:在Form2Form2類中,直接添加方法類中,直接添加方法checkBox_CheckedChangedcheckBox_CheckedChanged,該方法的功能是當(dāng)選中某該方法的功能是當(dāng)選中某個(gè)復(fù)選框時(shí),該復(fù)選框的文字會(huì)變?yōu)榫G色。個(gè)復(fù)選框時(shí),該復(fù)選框的文字會(huì)變?yōu)榫G色。 private void checkBox_CheckedChanged(object sender ,System.EventArgs e)privat
56、e void checkBox_CheckedChanged(object sender ,System.EventArgs e) CheckBox checkbox=(CheckBox)sender;CheckBox checkbox=(CheckBox)sender;if(checkbox.Checked)if(checkbox.Checked) checkbox.ForeColor=Color.Green;checkbox.ForeColor=Color.Green; elseelse checkbox.ForeColor=Color.Black;checkbox.ForeColor=C
57、olor.Black; 第三步第三步:將三個(gè):將三個(gè)CheckBoxCheckBox控件的控件的CheckedChangedCheckedChanged觸發(fā)事件均選擇為觸發(fā)事件均選擇為checkBox_CheckedChangedcheckBox_CheckedChanged。第一步第一步:在工程中添加一新窗體:在工程中添加一新窗體Form2Form2,設(shè)計(jì)畫面如圖:設(shè)計(jì)畫面如圖:第四步第四步:添加button1按鈕的Click事件代碼。private void button1_Click(object sender, System.EventArgs e) string str=選擇結(jié)果:;
58、str+=(this.checkBox1.Checked=true)?(this.checkBox1.Text+、):; str+=(this.checkBox2.Checked=true)?(this.checkBox2.Text+、):; str+=(this.checkBox3.Checked=true)?(this.checkBox3.Text+、):;if(strstr.Length-1=、)str=str.Substring(0,str.Length-1);MessageBox.Show(str);第五步:直接執(zhí)行窗體Form2的方法。 當(dāng)執(zhí)行項(xiàng)目時(shí),C#會(huì)自動(dòng)調(diào)用窗體Form1,
59、此處示例不需執(zhí)行Form1,而希望執(zhí)行窗體Form2,為了能夠直接調(diào)用窗體Form2,必須在Form1類中找到Main方法,對(duì)其進(jìn)行修改: static void Main() Application.Run(new Form2(); 當(dāng)選項(xiàng)比較多時(shí),或者在運(yùn)行時(shí)動(dòng)態(tài)的決定有哪些選項(xiàng)時(shí),可以使用這種控件。常用:(1)Items屬性:表示控件對(duì)象中所有項(xiàng)的集合。 (2)MultiColumn屬性:表示控件對(duì)象是否支持多列。 (3)ColumnWidth屬性:表示控件對(duì)象支持多列時(shí),列的寬度。 (4)CheckOnClick屬性:表示當(dāng)選定某項(xiàng)時(shí)是否應(yīng)同時(shí)改變復(fù)選框狀態(tài)。 (5) Sorted屬性
60、:表示控件對(duì)象中各項(xiàng)是否按字母有序。(6) CheckedItems 屬性:表示控件對(duì)象中選中項(xiàng)的集合。 (7) CheckedIndices屬性:表示控件對(duì)象中選中索引的集合。 8 CheckedListBox控件第一步第一步:設(shè)計(jì)界面,添加:設(shè)計(jì)界面,添加ItemsItems屬性選項(xiàng):屬性選項(xiàng):“足球足球 籃球籃球 排球排球 乒乓球乒乓球 羽毛球羽毛球 拳擊拳擊 體操體操 射擊射擊 跑步跑步 逛街逛街 象棋象棋 圍棋圍棋 跳棋跳棋 軍旗軍旗 五子棋五子棋 拱豬拱豬 雙升雙升 其它其它 ”。例:例:第二步:添加button1按鈕的Click事件代碼:private void button1_Click(ob
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年古玩字畫擔(dān)保協(xié)議
- 2025年寬帶網(wǎng)絡(luò)使用合同
- 2025年融資居間服務(wù)合同的比較研究
- 2025版煤炭行業(yè)安全生產(chǎn)技術(shù)改造項(xiàng)目合同4篇
- 2025版外匯保函交易風(fēng)險(xiǎn)管理與控制合同3篇
- 二零二五年度通訊車輛質(zhì)押擔(dān)保合同
- 二零二五年度健身器材租賃合同最長(zhǎng)期限約定
- 2025年度集體土地入股聯(lián)營(yíng)智慧農(nóng)業(yè)項(xiàng)目協(xié)議
- 2025年度林業(yè)資源運(yùn)輸公司大車司機(jī)招聘合同
- 2025年度藥店員工工作滿意度調(diào)查與改進(jìn)合同
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計(jì)與授權(quán)使用3篇
- 心肺復(fù)蘇課件2024
- 《城鎮(zhèn)燃?xì)忸I(lǐng)域重大隱患判定指導(dǎo)手冊(cè)》專題培訓(xùn)
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院專升本管理學(xué)真題
- 全國(guó)身份證前六位、區(qū)號(hào)、郵編-編碼大全
- 2024-2025學(xué)年福建省廈門市第一中學(xué)高一(上)適應(yīng)性訓(xùn)練物理試卷(10月)(含答案)
- 《零售學(xué)第二版教學(xué)》課件
- 廣東省珠海市香洲區(qū)2023-2024學(xué)年四年級(jí)下學(xué)期期末數(shù)學(xué)試卷
- 房地產(chǎn)行業(yè)職業(yè)生涯規(guī)劃
- 江蘇省建筑與裝飾工程計(jì)價(jià)定額(2014)電子表格版
- MOOC 數(shù)字電路與系統(tǒng)-大連理工大學(xué) 中國(guó)大學(xué)慕課答案
評(píng)論
0/150
提交評(píng)論