




第8章 Windows窗體應(yīng)用程序設(shè)計0_免費下載.ppt.ppt 免費下載
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1,第8章Windows窗體應(yīng)用程序設(shè)計,2,8.1 Windows編程的基礎(chǔ)知識,Windows窗體是制作標準Win32屏幕的一種更高級的方法,具有非常健全的功能。.NET Framework中的所有語言都使用Windows窗體來代替它們在圖形窗體中所使用的組件。在.NET下,Windows窗體為所有的語言提供了一套豐富的、統(tǒng)一的控件和繪圖功能,以及用于圖形和繪圖底層Windows服務(wù)的標準API。有了Windows窗體,任何圖形和屏幕函數(shù)就不再需要使用內(nèi)置的Windows圖形接口了。,Windows應(yīng)用程序是運行在Windows操作系統(tǒng)中的單機程序或C/S結(jié)構(gòu)的客戶端程序。包括兩方面: 1
2、、 Windows編程接口和類庫 2、 Windows應(yīng)用程序的基本結(jié)構(gòu),1 Windows編程接口和類庫,操作系統(tǒng)為了方便應(yīng)用程序設(shè)計,一般都要提供一個函數(shù)庫,設(shè)計應(yīng)用程序的一些共用代碼都包含在這個庫中。程序員可以調(diào)用庫中函數(shù),以簡化編程。 API MFC類庫 組件和組件庫 .Net FrameWork基礎(chǔ)類庫,2 Windows應(yīng)用程序的基本結(jié)構(gòu),Windows應(yīng)用程序和控制臺應(yīng)用程序的基本結(jié)構(gòu)類似,程序的執(zhí)行總是從Main()方法開始,主函數(shù)Main()必須在一個類中。但Windows應(yīng)用程序使用圖形界面,一般有一個窗口(Form),采用事件驅(qū)動方式工作。,最簡單的Windows應(yīng)用程序
3、如下: using System; /引入命名空間 using System.Windows.Forms; public class Form1:Form /類定義 static void Main() /主函數(shù) Application.Run(new Form1(); ,(1) 最簡單的Windows應(yīng)用程序,using System; using System.Windows.Forms; using System.Drawing; public class Form1:Form /構(gòu)造函數(shù) public Form1() this.Text=我的第一個程序; button1=new But
4、ton();/生成Button類對象,(2)窗體中增加按鈕(Button)控件的方法:,Button button1;/生成Button類引用變量,/修改按鈕位置 button1.Location=new Point(25,25); /修改button1按鈕的標題 button1.Text=“確定”; /button1_Click函數(shù)是按鈕單擊事件的單擊事件處理函數(shù) button1.Click+=new System.EventHandler(button1_Click); /按鈕增加到窗體中并顯示 this.Controls.Add(button1); ,(2)窗體中增加按鈕(Button)
5、控件的方法:,static void Main() Application.Run(new Form1(); /下邊函數(shù)是單擊按鈕事件處理函數(shù) private void button1_Click(object sender, EventArgs e) /單擊按鈕后執(zhí)行的語句 this.button1.Text=“單擊了我”; ,在窗體中增加控件類的對象的步驟: 定義Button類變量button1 在構(gòu)造函數(shù)中用new生成Button類對象 在構(gòu)造函數(shù)中修改button1的屬性 增加button1的事件處理函數(shù) 這些步驟對于增加任何控件都是相同的,結(jié)論:,3 用VS2005創(chuàng)建Windows
6、應(yīng)用程序,【例】使用微軟VS2005創(chuàng)建Windows應(yīng)用程序的具體步驟如下: (1)運行VS2005程序,單擊菜單“文件(F)|新建項目(P)”菜單項,打開“新建項目”對話框如下,單擊“確定”按鈕,創(chuàng)建項目。,單擊菜單“文件(F)|全部保存(L)”菜單項,打開“保存項目”對話框如下,按圖中那樣填寫,第一項是項目名。,(2)單擊“確定”按鈕,保存解決方案的所有文件。打開如下對話框。解決方案包括一個項目,解決方案的所有文件都保存到WindowsApplication7文件夾下。在WindowsApplication7文件夾中下有1個文件夾WindowsApplication7和文件 Window
7、sApplication7.sln。打開WindowsApplication7文件夾,可以看到有3個文件夾和5個文件。,(3)下邊在窗體中增加一個按鈕,并為按鈕增加單擊事件函數(shù)。打開工具箱窗口,如下圖。雙擊Button控件,Button控件將放到Form1窗體中。打開屬性窗口,修改屬性,打開事件窗口,增加事件。,工具箱窗口 屬性窗口 事件窗口,4 方案(Solution)和項目(Project),一個應(yīng)用(Application)可能包括一個或多個可執(zhí)行程序,所有這些可執(zhí)行程序的集合叫做一個應(yīng)用解決方案。 為了生成一個可執(zhí)行程序,可能需要有一個或多個文件,所有這些文件的集合叫一個項目,因此項目
8、是為了創(chuàng)建一個可執(zhí)行程序所必需的所有的文件的集合。而一個方案中可能包括多個項目。解決方案資源管理器窗口可以為我們顯示一個解決方案的樹形結(jié)構(gòu),樹形結(jié)構(gòu)中包含項目及項目中的文件。,各個文件夾和文件的用途如下: bin文件夾 -保存編譯后的程序 obj文件夾 保存臨時文件 Properties文件夾 Form1.cs 窗體文件-窗體代碼文件 Form1.Designer.cs 窗體設(shè)計文件 Program.CS 程序入口,5 Win Forms程序文件夾及文件后綴名,Properties文件夾 定義你程序集的屬性 項目屬性文件夾 一般只有一個 AssemblyInfo.cs 類文件,用于保存程序集的
9、信息,如名稱,版本等,這些信息一般與項目屬性面板中的數(shù)據(jù)對應(yīng),不需要手動編寫 Bin文件夾 目錄用來保存項目生成后程序集,它有Debug和Release兩個版本,分別對應(yīng)的文件夾為bin/Debug和bin/Release,這個文件夾是默認的輸出路徑,我們可以通過:項目屬性配置屬性輸出路徑來修改。,文件夾,Obj文件夾 目錄是用來保存每個模塊的編譯結(jié)果,在.NET中,編譯是分模塊進行的,編譯整個完成后會合并為一個.DLL或.EXE保存到bin目錄下。因為每次編譯時默認都是采用增量編譯,即只重新編譯改變了的模塊,obj保存每個模塊的編譯結(jié)果,用來加快編譯速度。是否采用增量編譯,可以通過:項目屬性
10、配置屬性高級增量編譯來設(shè)置。,.sln 解決方案文件,為解決方案資源管理器提供顯示管理文件的圖形接口所需的信息。 .csproj 項目文件,創(chuàng)建應(yīng)用程序所需的引用、數(shù)據(jù)連接、文件夾和文件的信息。 .cs 類模塊代碼文件。業(yè)務(wù)邏輯處理層的代碼。,文件,designer.cs 是窗體設(shè)計器生成的代碼文件,作用是對窗體上的控件做初始化工作(在函數(shù)InitializeComponent()中)VS2003以前都把這部分代碼放到窗體的cs文件中,由于這部分代碼一般不用手工修改,在VS2005以后把它單獨分離出來形成一個designer.cs文件與窗體對應(yīng)。這樣cs文件中剩下的代碼都是與程序功能相關(guān)性較高
11、的代碼利于維護。,Form1.Designer.cs 文件: namespace Proj8_1 partial class Form1 / /必需的設(shè)計器變量。 / private System.ComponentModel.IContainer components = null; / /清理所有正在使用的資源。 / /如果應(yīng)釋放托管資源,為true; /否則為false。 protected override void Dispose(bool disposing) /重寫基類Dispose()方法 if (disposing /調(diào)用基類的Dispose()方法 ,#region Win
12、dows 窗體設(shè)計器生成的代碼 / /設(shè)計器支持所需的方法 - 不要 /使用代碼編輯器修改此方法的內(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.FontS
13、tyle.Bold, System.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)用模式窗體; this.button1.UseVisualStyleBackColor = true;
14、this.button1.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.
15、button2.Size = new System.Drawing.Size(117, 33); this.button2.TabIndex = 1; this.button2.Text = 調(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.AutoScal
16、eMode = 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(fal
17、se); ,/ STAThread是一種線程模型,用在程序的入口方法上(在C#和VB.NET里是Main()方法),指示應(yīng)用程序的默認線程模型是單線程單元 (STA)。 是STA。 STAThread static void Main() /程序運行在XP環(huán)境中能自動應(yīng)用XP的主題樣式 Application.EnableVisualStyles(); /使用GDI還是,false是 GDI+ ,true是 GDI Application.SetCompatibleTextRenderingDefault(false); /運行啟動窗體 Application.Run(new Form1();
18、 ,Program.CS,1、為什么要使用窗體,簡單 強大 方便 靈活 ,8.2 Windows窗體概述,2 什么是窗體,Windows 操作系統(tǒng)中,處處是窗體,3、怎樣創(chuàng)建 Windows 程序,在 VS 中創(chuàng)建 Windows 應(yīng)用程序的步驟: 1、打開 VS 2、新建項目 3、項目類型:Visual C# 項目 4、模板:Windows 應(yīng)用程序,4、認識 WinForms,項目名稱,主程序文件, 包含Main方法,我們編寫代碼的文件,解決方案名稱,窗體設(shè)計器代碼文件, 代碼為VS自動生成,5、Main 方法,位于 Program.cs 文件 Windows程序的入口,/ Program
19、.cs namespace MyForm static class Program . static void Main( ) Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(); ,Main 方法, 程序的入口,VS 自動生成 一般不需要理會,6、進一步認識窗體文件,WinForms 窗體有兩種編輯窗口:,窗體設(shè)計器窗口,窗體代碼編輯窗口,?,7、為什么使用partial,具有雙鑰匙的密碼箱,第一把鑰匙,第二把鑰匙
20、,為了安全,兩把鑰匙分開放置,只有兩把鑰匙同時使用才能打開密碼箱,用 partial 將同一個窗體的代碼分開放在兩個文件中: 一個存放 VS 自動生成的代碼 一個存放我們自己編寫的代碼,程序員編寫的代碼,VS自動生成的代碼,/ Form1.Designer.cs namespace MyForm partial class Form1 / private void InitializeComponent() / VS自動生成的代碼 this.ShowInTaskbar = false; this.Name = Form1; this.Text = Form1; this.TopMost = t
21、rue; ,運行時 合到一起 組成一個窗體文件,8、怎樣使用partial,/ Form1.cs namespace MyForm public partial class Form1 : Form public Form1() InitializeComponent(); / 我們編寫的代碼 ,構(gòu)造函數(shù) 做一些初始化的工作 編譯器自動調(diào)用,9、認識窗體類,/ Form1.cs namespace MyForm public partial class Form1 : Form public Form1() InitializeComponent(); ,冒號表示繼承 Form類定義了窗體的基
22、本屬性和行為 我們創(chuàng)建的窗體都繼承自Form類 Form1具有相應(yīng)的屬性和行為,Form 類:.NET 預(yù)定義的窗體類 Form1 繼承自 Form,10、窗體的重要屬性,Name :窗體對象的名字,類似于變量的名字,BackColor :窗體的背景色,ShowInTaskBar :設(shè)置窗體是否出現(xiàn)在任務(wù)欄,StartPosition :窗體第一次出現(xiàn)時的位置,Text :窗體標題欄顯示的文字,TopMost :設(shè)置窗體是否為最頂端的窗體,WindowState :窗體出現(xiàn)時最初的狀態(tài)(正常、最大化、最小化),11、為什么使用事件,Windows 系統(tǒng)中處處是事件: 鼠標按下、鼠標釋放、鍵盤鍵
23、按下 Windows 系統(tǒng)通過事件處理來響應(yīng)用戶的請求,顯示開始菜單,我的電腦 窗口打開,事件觸發(fā),事件響應(yīng)的結(jié)果,單擊,雙擊,12、事件驅(qū)動,Windows 通過隨時響應(yīng)用戶觸發(fā)的事件做出相應(yīng)的響應(yīng)事件驅(qū)動機制,我們需要做的: 針對我們感興趣的事件,編寫相應(yīng)的事件處理程序,WinForms 應(yīng)用程序也是事件驅(qū)動的,13、編寫事件處理程序,編寫事件處理程序的步驟: 1、選中控件 2、在“屬性”窗口中單擊 3、找到事件 4、生成事件處理方法 5、編寫處理代碼,事件處理程序分析,/ 窗體的鼠標移動事件處理程序 private void Form1_MouseMove(object sender,
24、MouseEventArgs e ) this.Text = String.Format(捕捉到鼠標了!(0,1), e.X,e.Y ); ,示例中添加的事件處理程序:,this關(guān)鍵字 代表窗體本身,鼠標的橫縱坐標,窗體標題欄顯示的文字,鼠標事件參數(shù),事件源,14、窗體的重要事件,Load :窗體加載事件 MouseClick :鼠標單擊事件 MouseDoubleClick :鼠標雙擊事件 MouseMove :鼠標移動事件 KeyDown :鍵盤按下事件 KeyUp :鍵盤釋放事件 ,窗體有哪些事件?,窗體上各事件的引發(fā)順序 當一個窗體啟動時,執(zhí)行事件過程的次序如下: (1)本窗體上的Lo
25、ad事件過程。 (2)本窗體上的Activated事件過程。 (3)本窗體上的其他Form級事件過程。 (4)本窗體上包含對象的相應(yīng)事件過程。 一個窗體被卸載時,執(zhí)行事件過程的次序如下: (1)本窗體上的Closing事件過程。 (2)本窗體上的FormClosing事件過程。 (3)本窗體上的Closed事件過程。 (4)本窗體上的FormClosed事件過程。,當鼠標在窗體上點擊時,窗體的背景色改變: 如果是紅色,變成黃色 如果是黃色,變成綠色 否則變成紅色,提示: 處理窗體的 MouseClick 事件 利用Color類得到某種顏色: 紅色Color.Red 綠色Color.Green
26、黃色Color.Yellow 窗體的背景色:this.BackColor 判斷背景色:if (this.BackColor = Color.Red),例,/ 鼠標單擊事件 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 = Color.Green; else this.BackCol
27、or = Color.Red; ,15、窗體顯示及分類,1、啟動窗體將自動顯示。 2、顯示一個非啟動窗體,即由一個窗體調(diào)用顯示另一個窗體需要創(chuàng)建另一個窗體的對象,再用Show()或ShowDialog()方法顯示。 Form1 f=new Form1(); /創(chuàng)建窗體的對象 f. Show();/非模式窗體 或 f.ShowDialog();/模式窗體,窗體顯示,1 單文檔窗體 單文檔窗體一次只能打開一個活動窗體,窗體間沒有包含關(guān)系。 (1)窗體間的跳轉(zhuǎn) 步驟: 1、定義窗體對象 2、顯示窗體,窗體分類,定義窗體對象:,被調(diào)用的窗體類名 窗體對象 = new 被調(diào)用的窗體類名( );,顯示窗體
28、:,窗體對象 . Show( );,例: Form1 f1=new Form1(); f1.Show();,例: /非模式窗體 Form1 f1=new Form1(); f1.Show();,(2)模式窗體和非模式窗體 模式窗體指不關(guān)閉當前窗就不能切換到其它窗體。窗體顯示用ShowDialog()方法。 非模式窗體則可以在窗體間自由切換。窗體顯示用Show ()方法。,例: 模式窗體 Form1 f1=new Form1(); f1. ShowDialog();,(1) 什么是MDI,在 MDI 應(yīng)用程序中可以同時打開多個文件,父窗口,子窗口,2 多文檔窗體(MDI),(2 ) 創(chuàng)建MDI示
29、例,(3) 怎樣創(chuàng)建MDI,創(chuàng)建 MDI 的步驟: 1、設(shè)置父窗體的 IsMDIContainer 屬性 2、設(shè)置子窗體的 MdiParent 屬性,ChildForm childForm = new ChildForm(); childForm.MdiParent = this; childForm.Show();,創(chuàng)建子窗體的對象,設(shè)置子窗體的父窗體,顯示子窗體,建立子窗體窗口列表步驟: 1、在父窗體中添加菜單條 2、添加 “窗口”菜單 3、設(shè)置菜單控件的 MdiWindowListItem 屬性,MDI中可以使用模式窗體嗎?,52,8.3 Windows窗體控件概述,Windows窗體是
30、制作標準Win32屏幕的一種更高級的方法,具有非常健全的功能。.NET Framework中的所有語言都使用Windows窗體來代替它們在圖形窗體中所使用的組件。在.NET下,Windows窗體為所有的語言提供了一套豐富的、統(tǒng)一的控件和繪圖功能,以及用于圖形和繪圖底層Windows服務(wù)的標準API。有了Windows窗體,任何圖形和屏幕函數(shù)就不再需要使用內(nèi)置的Windows圖形接口了。,Label :標簽,lbl,TextBox :文本框,txt,ListBox :列表框,lst,ComboBox :組合框,cbo,GroupBox :分組框,grp,Panel :面板,pnl,RadioBu
31、tton :單選按鈕,rdo,Button : 按鈕,btn,1、常見窗體控件及命名習慣,2、 常用基本屬性 1) Name:表示控件的名稱。 2) Enabled:表示控件是否可以對用戶交互作出響應(yīng)。 3) Font:表示控件中顯示文字的字體格式,包括字體名稱、字號以及是否以斜體、加粗和下劃線顯示。 4) BackColor:表示控件的背景色。 5) ForeColor:表示控件的前景色。 6) Image:表示控件上顯示的圖像。 7) Location:這是一個復(fù)合屬性,表示控件的左上角相對于其容器的左上角的坐標。 8) Size:這是一個復(fù)合屬性,表示控件的高度和寬度。 9) Visib
32、le:表示是否顯示該控件。,3、 常用事件 1) Click事件:單擊該控件時觸發(fā)。 2) MouseEnter事件:鼠標進入控件區(qū)域內(nèi)時觸發(fā)。 3) MouseDown事件:在控件區(qū)域內(nèi)按下鼠標鍵時觸發(fā)。 4) MouseLeave事件:鼠標離開控件區(qū)域時觸發(fā)。 5)KeyPress事件:當用戶按下又放開某個ASCII字符鍵時 ,會引發(fā)當前擁有焦點對象的KeyPress事件。 6) KeyDown和KeyUp事件: KeyDown和KeyUp事件發(fā)生在用戶按下鍵盤上某鍵時,通??删帉懫涫录a以判斷用戶按鍵的情況。,4、控件焦點與Tab鍵次序 焦點(Focus)是指當前處于活動狀態(tài)的窗體或控
33、件。,要將焦點移到當前窗體中的textBox1文本框,可以使用以下命令: textBox1.Focus();,1 Button控件 使用方法: 1)從工具欄拖放一個button到窗體 常用: 1Text屬性:顯示控件文本信息 例如:this.button1.Text=確定; 2Click事件:單擊鼠標左鍵時觸發(fā)。 例如: private void button1_Click(object sender, System.EventArgs e) MessageBox.Show(this,“你點擊了確定按鈕?!? “提示信息”,MessageBoxButtons.OK, MessageBoxIco
34、n.Information); ,8.3 基本控件,參數(shù)的含義: (1)object sender:代表發(fā)出事件的對象, 此處指button1。使用時可以直接用button1,也可 以像下面形式: Button button=(Button)sender; (2)System.EventArgs e:封裝了事件的信息,3. MouseEnter事件:鼠標進入按鈕區(qū)域時觸發(fā)。 例如: private void button1_MouseEnter(object sender,System.EventArgs e) /顏色在System.Drawing名稱空間下 this.button1.Back
35、Color=Color.Red; 4. MouseLeave事件:鼠標離開按鈕區(qū)域時觸發(fā)。 例如: private void button1_MouseLeave(object sender, System.EventArgs e) this.button1.BackColor=SystemColors.Control; ,2 TextBox控件/RichTextBox控件 常用: 1Text屬性:表示文本框中的當前文本。 例如:this.textBox1.Text=abcd; 2Multiline屬性:表示是否可以包含多行內(nèi)容。 3MaxLength屬性:表示用戶可以在文本框控件中最多鍵 入
36、的字符數(shù)。 4 PasswordChar屬性:用于屏蔽在單行文本框控件中輸入的的密碼字符 。 5、 TextChanged事件:更改Text屬性值時觸發(fā)。 例如: private void textBox1_TextChanged(object sender,System.EventArgs e) this.textBox2.Text=this.textBox1.Text; ,/標題為求積的按鈕的單擊事件處理函數(shù)如下: private void button1_Click(object sender,EventArgs e) float ss,ee; ss=Convert.ToSingle(t
37、extBox1.Text); ee=Convert.ToSingle(textBox2.Text); textBox3.Text=Convert.ToString(ss*ee); /標題為“清空”的按鈕的單擊事件處理函數(shù)如下: private void button2_Click(object sender, EventArgs e) textBox1.Text=; textBox2.Text=; textBox3.Text=; ,6、 KeyPress事件:輸入時按鍵觸發(fā)。一般用于監(jiān)控鍵盤的輸入字符, 可以用來限制鍵盤輸入字符,如數(shù)字,可打印字符等。,private void textBox
38、1_KeyPress(object sender, KeyPressEventArgs e) /限制鍵盤輸入 只能輸入數(shù)字和退格鍵 if (!(e.KeyChar = 48 ,例,3 Label控件和LinkLabel控件 Label控件通常用于提供控件或窗體的描述性文字,以便為用戶提供有幫助作用的信息。 1. Label控件常用的基本屬性 Text屬性:表示顯示的文本內(nèi)容。 2. 操作示例 LinkLabel控件與Label控件非常相似,不同的是它可以顯示超級鏈接。當用戶單擊LinkLabel控件時,會觸發(fā)LinkClicked事件,可以在LinkClicked事件中編寫代碼鏈接到指定的網(wǎng)頁
39、。,4 ImageList控件,ImageList控件提供一個集合,可以用于存儲在窗體的其他控件中使用圖像??梢栽趫D像列表中存儲任意大小的圖像,但在每個控件中,每個圖像的大小必須相同。對于后面要介紹的ListView控件,則需要兩個ImageList控件才能顯示大圖像和小圖像。 ImageList是一個不在運行期間顯示它本身的控件。在把它拖放到正在開發(fā)的窗體上時,它并不是放在窗體本身上,而是在窗體的下面,其中包含該控件所有的組件。這個功能可以防止不是用戶界面一部分的控件遮擋窗體設(shè)計器。這個控件的處理方式與其他控件相同,但不能移動它。,66,PictureBox控件是用于顯示圖像的,它與Imag
40、eList控件不同,在Windows窗體運行時,它所使用的圖像將被顯示出來。,67,5 PictureBox控件,常用屬性有: 1 Image:在PictureBox中顯示的圖像。 2 SizeMode:圖片在控件中的顯示方式。 其屬性有: AutoSize:調(diào)整控件PictureBox大小,使其等于所包含 的圖像大小。 CenterImage:如果控件PictureBox比圖像大,則圖像將 居中顯示。如果圖像比控件大,則圖片將居于控件中心,而外邊緣將被剪裁掉。 Normal:圖像被置于控件的左上角。如果圖像控件大, 則超出部分被剪裁掉。 StretchImage:控件中的圖像被拉伸或收縮,以
41、適合控 件的大小。,例: 第一步:向窗體上拖放一個PictureBox控件,一個Label控件, 分別調(diào)整為適當大小。 第二步:設(shè)置pictureBox1的Image屬性,將一個圖片放入控件 內(nèi)。然后修改SizeMode屬性,觀察效果。 第三步:添加下列事件: private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) this.label1.Text=string.Format(“鼠標在PictureBox中的 位置:x=0,y=1,e.X,e.Y); 第四步:運行,在圖片內(nèi)
42、移動鼠標,觀察結(jié)果。,6 RadioButton控件,單選按鈕是以他們所在的容器劃分組的,直接在Form上放置的單選按鈕將自動成為一組,這時Form就是容器,當選中容器中的一個單選按鈕時,其他的將自動撤銷選中。 如果要在一個Form上創(chuàng)建多個單選按鈕組,則需要使用GroupBox或者Panel控件作為容器。,常用: (1)Text屬性 (2)Checked屬性 (3)CheckedChanged事件,第一步:設(shè)計窗體。,例,第二步:添加下列代碼: private void radioButton_CheckedChanged(object sender, System.EventArgs e)
43、 RadioButton check=(RadioButton)sender; if(check.Checked) this.textBox1.Text=check.Text; 第三步:將三個RadioButton控件的CheckedChanged觸發(fā)事件均選擇為radioButton_CheckedChanged。 第四步:運行,觀察結(jié)果。,一般在下列情況下使用復(fù)選框: 響應(yīng)用戶對復(fù)選框的選擇,動態(tài)改變界面上其它控 件的狀態(tài)。 訪問復(fù)選框的狀態(tài),執(zhí)行不同的操作。 常用: (1)Text屬性:表示與復(fù)選框控件關(guān)聯(lián)的文本。 (2)Checked屬性:表示復(fù)選框是否處于選中狀態(tài)。 (3)Check
44、edChanged事件:表示當Checked屬性值更改時觸發(fā)的操作。,7 CheckBox控件控件,例:,第二步:在Form2類中,直接添加方法checkBox_CheckedChanged,該方法的功能是當選中某個復(fù)選框時,該復(fù)選框的文字會變?yōu)榫G色。 private void checkBox_CheckedChanged(object sender ,System.EventArgs e) CheckBox checkbox=(CheckBox)sender; if(checkbox.Checked) checkbox.ForeColor=Color.Green; else checkbo
45、x.ForeColor=Color.Black; 第三步:將三個CheckBox控件的CheckedChanged觸發(fā)事件均選擇為checkBox_CheckedChanged。,第一步:在工程中添加一新窗體Form2,設(shè)計畫面如圖:,第四步:添加button1按鈕的Click事件代碼。 private void button1_Click(object sender, System.EventArgs e) string str=選擇結(jié)果:; str+=(this.checkBox1.Checked=true)?(this.checkBox1.Text+、):; str+=(this.che
46、ckBox2.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的方法。 當執(zhí)行項目時,C#會自動調(diào)用窗體Form1,此處示例不需執(zhí)行Form1,而希望執(zhí)行窗體Form2,為了能夠直接調(diào)用窗體Form2,必須在Form1類中找到Main方法,對其進行修改: s
47、tatic void Main() Application.Run(new Form2(); ,當選項比較多時,或者在運行時動態(tài)的決定有哪些選項時,可以使用這種控件。 常用: (1)Items屬性:表示控件對象中所有項的集合。 (2)MultiColumn屬性:表示控件對象是否支持多列。 (3)ColumnWidth屬性:表示控件對象支持多列時,列的寬度。 (4)CheckOnClick屬性:表示當選定某項時是否應(yīng)同時改變復(fù)選框狀態(tài)。 (5) Sorted屬性:表示控件對象中各項是否按字母有序。 (6) CheckedItems 屬性:表示控件對象中選中項的集合。 (7) CheckedInd
48、ices屬性:表示控件對象中選中索引的集合。,8 CheckedListBox控件,第一步:設(shè)計界面,添加Items屬性選項:“足球 籃球 排球 乒乓球 羽毛球 拳擊 體操 射擊 跑步 逛街 象棋 圍棋 跳棋 軍旗 五子棋 拱豬 雙升 其它 ”。,例:,第二步:添加button1按鈕的Click事件代碼: private void button1_Click(object sender, System.EventArgs e) string str=選擇結(jié)果:; for(int i=0;ithis.checkedListBox1.CheckedItems.Count;i+) str+=this
49、.checkedListBox1.CheckedItemsi+、; if(strstr.Length-1=、) str=str.Substring(0,str.Length-1); MessageBox.Show(str); 第三步:運行,選中一項或者同時選中多項,點擊按鈕觀察結(jié)果。,列表框控件用來顯示一組條目,以便讓操作者從中選擇一條或者多條,然后進行相應(yīng)的處理。 常用: (1)Items屬性 (2)MultiColumn屬性、SelectionMode屬性、Anchor屬性 其中:SelectionMode屬性有: None:不能選擇 One:同一時刻只能選擇一條 MultiSimple:
50、同一時刻可以選擇一條或者多條 MultiExtended:同一時刻可以選擇一條或者多條,并且可以使用組合鍵(如Shift和Ctrl)幫助選擇 (3)SelectedItems屬性: 獲取選中項的集合,下標從0開始 (3)SelectedIndex屬性: 獲取選中項的索引,索引從0開始,9 ListBox控件,初始化方法。 string strArray=1,2,3; this.listBox1.Items.AddRange(strArray); 添加不重復(fù)條目的方法。 bool itemExist=false; for(int i=0;ithis.listBox1.Items.Count;i+
51、) if(this.listBox1.Itemsi.ToString()=abc) itemExist=true; break; if(itemExist=false) this.listBox1.Items.Add(abc); else / ,例:,例:,/刪除當前所選條目的方法 if(this.listBox1.SelectedIndex-1) /如果選擇了某項 this.listBox1.Items.Remove(this.listBox1.SelectedItem); /刪除選中的一條或者多個條目的方法 for(int i=this.listBox1.SelectedItems.Cou
52、nt-1;i=0;i-) this.listBox1.Items.Remove(listBox1.SelectedItemsi); 思考:將上述代碼改為 for(int i=0;ithis.listBox1.SelectedItems.Count;i+) this.listBox1.Items.Remove(listBox1.SelectedItemsi); 可以嗎?為什么?,這種控件有兩部分組成,即一個文本框和一個列表框。文本框可以用來顯示當前選中的條目,如果文本框可以編輯,則可以直接輸入選擇的條目。單擊文本框旁邊帶有向下箭頭的按鈕,則會彈出列表框,使用鍵盤或者鼠標可以在列表框中選擇條目。
53、常用屬性: 1 Text屬性、Items屬性、DropDownStyle屬性。 其中DropDownStyle屬性有: Simple:同時顯示文本框和列表框,文本框可以被編輯。 DropDown:只顯示文本框,需要通過鍵盤或者鼠標打開列 表框,文本框可以被編輯。 DropDownList:只顯示文本框,需要通過鍵盤或者鼠標打 開列表框,文本框不可以被編輯。 2 SelectedIndexChanged事件 選擇項發(fā)生改變時觸發(fā)該事件。,10 ComboBox控件,第一步:設(shè)計窗體。,例:,第二步:添加comboBox1的SelectedIndexChanged事件。 private void
54、comboBox1_SelectedIndexChanged(object sender, System.EventArgs e) if(boBox1.SelectedIndex-1 ,第三步:添加comboBox2的SelectedIndexChanged事件。 private void comboBox2_SelectedIndexChanged(object sender, System.EventArgs e) if(boBox1.SelectedIndex-1 第四步:運行,修改小組和項目選項,觀察ListBox中內(nèi)容的變化。,該控件的用途是當鼠標位于某個控件上并停留一段時間后,顯示
55、該控件功能的提示信息。 使用方法:向窗體拖放一個該控件,其它控件的屬性里將添加一個ToolTip屬性,鍵入提示文本即可。 主要屬性有: Active:指示該控件當前是否處于激活狀態(tài)。 AutomaticDelay:設(shè)置經(jīng)過多長時間顯示提示信息,缺省值為500ms。 AutoPopDelay:設(shè)置鼠標指針停留多長時間后消失提示信息。 例如:向6.1.7例子中的設(shè)計窗體拖放一個ToolTip控件,然后在構(gòu)造函數(shù)中加入下列代碼: this.toolTip1.SetToolTip(boBox1,選擇參加的小組。); this.toolTip1.SetToolTip(boBox2,選擇左邊小組參加的項目
56、。); this.toolTip1.SetToolTip(this.listBox1,各小組參加的項目列表。); 運行,分別將鼠標在上述控件中停留一段時間,觀察顯示的提示信息。,11 ToolTip控件,MenuStrip 控件主要用于生成所在窗體的主菜單。 用符號“ richTextBox1.Clear(); richTextBox1.Focus(); private void 打開OToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.Enabled = true; richTextBox1.LoadFile(p:
57、vcsharp2005chapter5source.rtf,RichTextBoxStreamType.RichText); private void 保存SToolStripMenuItem_Click(object sender, EventArgs e) /將文本框的內(nèi)容保存為p:vcsharp2005chapter5source.rtf,并清除文本框中的內(nèi)容給出提示信息 richTextBox1.SaveFile(p:vcsharp2005chapter5source.rtf,RichTextBoxStreamType.RichText); richTextBox1.Clear();
58、MessageBox.Show(文件已保存于source.rtf!); /使打開菜單項可用,用于打開文件source.rtf 打開OToolStripMenuItem.Enabled = true; ,private void 剪切TToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.Cut(); private void 復(fù)制CToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.Copy(); private void 粘貼PToolStr
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030轉(zhuǎn)向臂起重機行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國自穿孔鉚釘行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國自助秤行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國自動視覺檢測系統(tǒng)行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國腕帶高爾夫GPS行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國腳輪上的患者升降平臺行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國胃腸病學設(shè)備行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國腸內(nèi)飼管行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國聚苯醚(PPE)混合物和合金行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國聚丙烯蜂窩行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 重癥醫(yī)學質(zhì)量控制中心督查評價標準及評分細則
- 2024年廣東省英語小升初模擬試卷與參考答案
- 心血管內(nèi)科基礎(chǔ)知識:綜合試題及答案
- 復(fù)方口服避孕藥臨床應(yīng)用中國專家共識
- 代收工程款授權(quán)委托書
- 國家開放大學專科《辦公室管理》期末紙質(zhì)考試第五大題案例分析總題庫2025版
- 人教版五年級數(shù)學上冊解決問題分類練習及答案
- 2024年天津農(nóng)墾宏達有限公司招聘筆試沖刺題(帶答案解析)
- 關(guān)于開展基層治理小馬拉大車整治工作方案
- 四年級四年級下冊閱讀理解20篇(附帶答案解析)經(jīng)典
- 西藏自治區(qū)昌都市2021-2022學年七下期末數(shù)學試題(原卷版)
評論
0/150
提交評論