第8章 Windows窗體應用程序設計0 (2).ppt_第1頁
第8章 Windows窗體應用程序設計0 (2).ppt_第2頁
第8章 Windows窗體應用程序設計0 (2).ppt_第3頁
第8章 Windows窗體應用程序設計0 (2).ppt_第4頁
第8章 Windows窗體應用程序設計0 (2).ppt_第5頁
已閱讀5頁,還剩177頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1,第8章Windows窗體應用程序設計,2,8.1 Windows編程的基礎知識,Windows窗體是制作標準Win32屏幕的一種更高級的方法,具有非常健全的功能。.NET Framework中的所有語言都使用Windows窗體來代替它們在圖形窗體中所使用的組件。在.NET下,Windows窗體為所有的語言提供了一套豐富的、統(tǒng)一的控件和繪圖功能,以及用于圖形和繪圖底層Windows服務的標準API。有了Windows窗體,任何圖形和屏幕函數(shù)就不再需要使用內置的Windows圖形接口了。,Windows應用程序是運行在Windows操作系統(tǒng)中的單機程序或C/S結構的客戶端程序。包括兩方面: 1

2、、 Windows編程接口和類庫 2、 Windows應用程序的基本結構,1 Windows編程接口和類庫,操作系統(tǒng)為了方便應用程序設計,一般都要提供一個函數(shù)庫,設計應用程序的一些共用代碼都包含在這個庫中。程序員可以調用庫中函數(shù),以簡化編程。 API MFC類庫 組件和組件庫 .Net FrameWork基礎類庫,2 Windows應用程序的基本結構,Windows應用程序和控制臺應用程序的基本結構類似,程序的執(zhí)行總是從Main()方法開始,主函數(shù)Main()必須在一個類中。但Windows應用程序使用圖形界面,一般有一個窗口(Form),采用事件驅動方式工作。,最簡單的Windows應用程序

3、如下: using System; /引入命名空間 using System.Windows.Forms; public class Form1:Form /類定義 static void Main() /主函數(shù) Application.Run(new Form1(); ,(1) 最簡單的Windows應用程序,using System; using System.Windows.Forms; using System.Drawing; public class Form1:Form /構造函數(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 在構造函數(shù)中用new生成Button類對象 在構造函數(shù)中修改button1的屬性 增加button1的事件處理函數(shù) 這些步驟對于增加任何控件都是相同的,結論:,3 用VS2005創(chuàng)建Windows

6、應用程序,【例】使用微軟VS2005創(chuàng)建Windows應用程序的具體步驟如下: (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),一個應用(Application)可能包括一個或多個可執(zhí)行程序,所有這些可執(zhí)行程序的集合叫做一個應用解決方案。 為了生成一個可執(zhí)行程序,可能需要有一個或多個文件,所有這些文件的集合叫一個項目,因此項目

8、是為了創(chuàng)建一個可執(zhí)行程序所必需的所有的文件的集合。而一個方案中可能包括多個項目。解決方案資源管理器窗口可以為我們顯示一個解決方案的樹形結構,樹形結構中包含項目及項目中的文件。,各個文件夾和文件的用途如下: bin文件夾 -保存編譯后的程序 obj文件夾 保存臨時文件 Properties文件夾 Form1.cs 窗體文件-窗體代碼文件 Form1.Designer.cs 窗體設計文件 Program.CS 程序入口,5 Win Forms程序文件夾及文件后綴名,Properties文件夾 定義你程序集的屬性 項目屬性文件夾 一般只有一個 AssemblyInfo.cs 類文件,用于保存程序集的

9、信息,如名稱,版本等,這些信息一般與項目屬性面板中的數(shù)據(jù)對應,不需要手動編寫 Bin文件夾 目錄用來保存項目生成后程序集,它有Debug和Release兩個版本,分別對應的文件夾為bin/Debug和bin/Release,這個文件夾是默認的輸出路徑,我們可以通過:項目屬性配置屬性輸出路徑來修改。,文件夾,Obj文件夾 目錄是用來保存每個模塊的編譯結果,在.NET中,編譯是分模塊進行的,編譯整個完成后會合并為一個.DLL或.EXE保存到bin目錄下。因為每次編譯時默認都是采用增量編譯,即只重新編譯改變了的模塊,obj保存每個模塊的編譯結果,用來加快編譯速度。是否采用增量編譯,可以通過:項目屬性

10、配置屬性高級增量編譯來設置。,.sln 解決方案文件,為解決方案資源管理器提供顯示管理文件的圖形接口所需的信息。 .csproj 項目文件,創(chuàng)建應用程序所需的引用、數(shù)據(jù)連接、文件夾和文件的信息。 .cs 類模塊代碼文件。業(yè)務邏輯處理層的代碼。,文件,designer.cs 是窗體設計器生成的代碼文件,作用是對窗體上的控件做初始化工作(在函數(shù)InitializeComponent()中)VS2003以前都把這部分代碼放到窗體的cs文件中,由于這部分代碼一般不用手工修改,在VS2005以后把它單獨分離出來形成一個designer.cs文件與窗體對應。這樣cs文件中剩下的代碼都是與程序功能相關性較高

11、的代碼利于維護。,Form1.Designer.cs 文件: namespace Proj8_1 partial class Form1 / /必需的設計器變量。 / private System.ComponentModel.IContainer components = null; / /清理所有正在使用的資源。 / /如果應釋放托管資源,為true; /否則為false。 protected override void Dispose(bool disposing) /重寫基類Dispose()方法 if (disposing /調用基類的Dispose()方法 ,#region Win

12、dows 窗體設計器生成的代碼 / /設計器支持所需的方法 - 不要 /使用代碼編輯器修改此方法的內容。 / 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 = 調用模式窗體; 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 = 調用無模式窗體; 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()方法),指示應用程序的默認線程模型是單線程單元 (STA)。 是STA。 STAThread static void Main() /程序運行在XP環(huán)境中能自動應用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 應用程序的步驟: 1、打開 VS 2、新建項目 3、項目類型:Visual C# 項目 4、模板:Windows 應用程序,4、認識 WinForms,項目名稱,主程序文件, 包含Main方法,我們編寫代碼的文件,解決方案名稱,窗體設計器代碼文件, 代碼為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 窗體有兩種編輯窗口:,窗體設計器窗口,窗體代碼編輯窗口,?,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(); / 我們編寫的代碼 ,構造函數(shù) 做一些初始化的工作 編譯器自動調用,9、認識窗體類,/ Form1.cs namespace MyForm public partial class Form1 : Form public Form1() InitializeComponent(); ,冒號表示繼承 Form類定義了窗體的基

22、本屬性和行為 我們創(chuàng)建的窗體都繼承自Form類 Form1具有相應的屬性和行為,Form 類:.NET 預定義的窗體類 Form1 繼承自 Form,10、窗體的重要屬性,Name :窗體對象的名字,類似于變量的名字,BackColor :窗體的背景色,ShowInTaskBar :設置窗體是否出現(xiàn)在任務欄,StartPosition :窗體第一次出現(xiàn)時的位置,Text :窗體標題欄顯示的文字,TopMost :設置窗體是否為最頂端的窗體,WindowState :窗體出現(xiàn)時最初的狀態(tài)(正常、最大化、最小化),11、為什么使用事件,Windows 系統(tǒng)中處處是事件: 鼠標按下、鼠標釋放、鍵盤鍵

23、按下 Windows 系統(tǒng)通過事件處理來響應用戶的請求,顯示開始菜單,我的電腦 窗口打開,事件觸發(fā),事件響應的結果,單擊,雙擊,12、事件驅動,Windows 通過隨時響應用戶觸發(fā)的事件做出相應的響應事件驅動機制,我們需要做的: 針對我們感興趣的事件,編寫相應的事件處理程序,WinForms 應用程序也是事件驅動的,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關鍵字 代表窗體本身,鼠標的橫縱坐標,窗體標題欄顯示的文字,鼠標事件參數(shù),事件源,14、窗體的重要事件,Load :窗體加載事件 MouseClick :鼠標單擊事件 MouseDoubleClick :鼠標雙擊事件 MouseMove :鼠標移動事件 KeyDown :鍵盤按下事件 KeyUp :鍵盤釋放事件 ,窗體有哪些事件?,窗體上各事件的引發(fā)順序 當一個窗體啟動時,執(zhí)行事件過程的次序如下: (1)本窗體上的Lo

25、ad事件過程。 (2)本窗體上的Activated事件過程。 (3)本窗體上的其他Form級事件過程。 (4)本窗體上包含對象的相應事件過程。 一個窗體被卸載時,執(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、顯示一個非啟動窗體,即由一個窗體調用顯示另一個窗體需要創(chuàng)建另一個窗體的對象,再用Show()或ShowDialog()方法顯示。 Form1 f=new Form1(); /創(chuàng)建窗體的對象 f. Show();/非模式窗體 或 f.ShowDialog();/模式窗體,窗體顯示,1 單文檔窗體 單文檔窗體一次只能打開一個活動窗體,窗體間沒有包含關系。 (1)窗體間的跳轉 步驟: 1、定義窗體對象 2、顯示窗體,窗體分類,定義窗體對象:,被調用的窗體類名 窗體對象 = new 被調用的窗體類名( );,顯示窗體

28、:,窗體對象 . Show( );,例: Form1 f1=new Form1(); f1.Show();,例: /非模式窗體 Form1 f1=new Form1(); f1.Show();,(2)模式窗體和非模式窗體 模式窗體指不關閉當前窗就不能切換到其它窗體。窗體顯示用ShowDialog()方法。 非模式窗體則可以在窗體間自由切換。窗體顯示用Show ()方法。,例: 模式窗體 Form1 f1=new Form1(); f1. ShowDialog();,(1) 什么是MDI,在 MDI 應用程序中可以同時打開多個文件,父窗口,子窗口,2 多文檔窗體(MDI),(2 ) 創(chuàng)建MDI示

29、例,(3) 怎樣創(chuàng)建MDI,創(chuàng)建 MDI 的步驟: 1、設置父窗體的 IsMDIContainer 屬性 2、設置子窗體的 MdiParent 屬性,ChildForm childForm = new ChildForm(); childForm.MdiParent = this; childForm.Show();,創(chuàng)建子窗體的對象,設置子窗體的父窗體,顯示子窗體,建立子窗體窗口列表步驟: 1、在父窗體中添加菜單條 2、添加 “窗口”菜單 3、設置菜單控件的 MdiWindowListItem 屬性,MDI中可以使用模式窗體嗎?,52,8.3 Windows窗體控件概述,Windows窗體是

30、制作標準Win32屏幕的一種更高級的方法,具有非常健全的功能。.NET Framework中的所有語言都使用Windows窗體來代替它們在圖形窗體中所使用的組件。在.NET下,Windows窗體為所有的語言提供了一套豐富的、統(tǒng)一的控件和繪圖功能,以及用于圖形和繪圖底層Windows服務的標準API。有了Windows窗體,任何圖形和屏幕函數(shù)就不再需要使用內置的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:表示控件是否可以對用戶交互作出響應。 3) Font:表示控件中顯示文字的字體格式,包括字體名稱、字號以及是否以斜體、加粗和下劃線顯示。 4) BackColor:表示控件的背景色。 5) ForeColor:表示控件的前景色。 6) Image:表示控件上顯示的圖像。 7) Location:這是一個復合屬性,表示控件的左上角相對于其容器的左上角的坐標。 8) Size:這是一個復合屬性,表示控件的高度和寬度。 9) Visib

32、le:表示是否顯示該控件。,3、 常用事件 1) Click事件:單擊該控件時觸發(fā)。 2) MouseEnter事件:鼠標進入控件區(qū)域內時觸發(fā)。 3) MouseDown事件:在控件區(qū)域內按下鼠標鍵時觸發(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屬性:表示是否可以包含多行內容。 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屬性:表示顯示的文本內容。 2. 操作示例 LinkLabel控件與Label控件非常相似,不同的是它可以顯示超級鏈接。當用戶單擊LinkLabel控件時,會觸發(fā)LinkClicked事件,可以在LinkClicked事件中編寫代碼鏈接到指定的網頁

39、。,4 ImageList控件,ImageList控件提供一個集合,可以用于存儲在窗體的其他控件中使用圖像??梢栽趫D像列表中存儲任意大小的圖像,但在每個控件中,每個圖像的大小必須相同。對于后面要介紹的ListView控件,則需要兩個ImageList控件才能顯示大圖像和小圖像。 ImageList是一個不在運行期間顯示它本身的控件。在把它拖放到正在開發(fā)的窗體上時,它并不是放在窗體本身上,而是在窗體的下面,其中包含該控件所有的組件。這個功能可以防止不是用戶界面一部分的控件遮擋窗體設計器。這個控件的處理方式與其他控件相同,但不能移動它。,66,PictureBox控件是用于顯示圖像的,它與Imag

40、eList控件不同,在Windows窗體運行時,它所使用的圖像將被顯示出來。,67,5 PictureBox控件,常用屬性有: 1 Image:在PictureBox中顯示的圖像。 2 SizeMode:圖片在控件中的顯示方式。 其屬性有: AutoSize:調整控件PictureBox大小,使其等于所包含 的圖像大小。 CenterImage:如果控件PictureBox比圖像大,則圖像將 居中顯示。如果圖像比控件大,則圖片將居于控件中心,而外邊緣將被剪裁掉。 Normal:圖像被置于控件的左上角。如果圖像控件大, 則超出部分被剪裁掉。 StretchImage:控件中的圖像被拉伸或收縮,以

41、適合控 件的大小。,例: 第一步:向窗體上拖放一個PictureBox控件,一個Label控件, 分別調整為適當大小。 第二步:設置pictureBox1的Image屬性,將一個圖片放入控件 內。然后修改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); 第四步:運行,在圖片內

42、移動鼠標,觀察結果。,6 RadioButton控件,單選按鈕是以他們所在的容器劃分組的,直接在Form上放置的單選按鈕將自動成為一組,這時Form就是容器,當選中容器中的一個單選按鈕時,其他的將自動撤銷選中。 如果要在一個Form上創(chuàng)建多個單選按鈕組,則需要使用GroupBox或者Panel控件作為容器。,常用: (1)Text屬性 (2)Checked屬性 (3)CheckedChanged事件,第一步:設計窗體。,例,第二步:添加下列代碼: 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。 第四步:運行,觀察結果。,一般在下列情況下使用復選框: 響應用戶對復選框的選擇,動態(tài)改變界面上其它控 件的狀態(tài)。 訪問復選框的狀態(tài),執(zhí)行不同的操作。 常用: (1)Text屬性:表示與復選框控件關聯(lián)的文本。 (2)Checked屬性:表示復選框是否處于選中狀態(tài)。 (3)Check

44、edChanged事件:表示當Checked屬性值更改時觸發(fā)的操作。,7 CheckBox控件控件,例:,第二步:在Form2類中,直接添加方法checkBox_CheckedChanged,該方法的功能是當選中某個復選框時,該復選框的文字會變?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,設計畫面如圖:,第四步:添加button1按鈕的Click事件代碼。 private void button1_Click(object sender, System.EventArgs e) string str=選擇結果:; 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#會自動調用窗體Form1,此處示例不需執(zhí)行Form1,而希望執(zhí)行窗體Form2,為了能夠直接調用窗體Form2,必須在Form1類中找到Main方法,對其進行修改: s

47、tatic void Main() Application.Run(new Form2(); ,當選項比較多時,或者在運行時動態(tài)的決定有哪些選項時,可以使用這種控件。 常用: (1)Items屬性:表示控件對象中所有項的集合。 (2)MultiColumn屬性:表示控件對象是否支持多列。 (3)ColumnWidth屬性:表示控件對象支持多列時,列的寬度。 (4)CheckOnClick屬性:表示當選定某項時是否應同時改變復選框狀態(tài)。 (5) Sorted屬性:表示控件對象中各項是否按字母有序。 (6) CheckedItems 屬性:表示控件對象中選中項的集合。 (7) CheckedInd

48、ices屬性:表示控件對象中選中索引的集合。,8 CheckedListBox控件,第一步:設計界面,添加Items屬性選項:“足球 籃球 排球 乒乓球 羽毛球 拳擊 體操 射擊 跑步 逛街 象棋 圍棋 跳棋 軍旗 五子棋 拱豬 雙升 其它 ”。,例:,第二步:添加button1按鈕的Click事件代碼: private void button1_Click(object sender, System.EventArgs e) string str=選擇結果:; 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); 第三步:運行,選中一項或者同時選中多項,點擊按鈕觀察結果。,列表框控件用來顯示一組條目,以便讓操作者從中選擇一條或者多條,然后進行相應的處理。 常用: (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); 添加不重復條目的方法。 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); 可以嗎?為什么?,例 設計一個窗體,其功能是在兩個列表框中移動數(shù)據(jù)項。,Form7窗體: (1)設計界面 (2)事件過程: private void Form7_Load(object sender, EventArgs e) listB

53、ox1.Items.Add(清華大學); listBox1.Items.Add(北京大學); listBox1.Items.Add(浙江大學); listBox1.Items.Add(南京大學); listBox1.Items.Add(武漢大學); listBox1.Items.Add(中國科技大學); listBox1.Items.Add(中國人民大學); listBox1.Items.Add(華中科技大學); listBox1.Items.Add(復旦大學); enbutton(); /調用enbutton()方法 ,private void enbutton() /自定義方法 if (l

54、istBox1.Items.Count = 0)/當左列表框為空時右移命令按鈕不可用 button1.Enabled = false; button2.Enabled = false; else/當左列表框不為空時右移命令按鈕可用 button1.Enabled = true; button2.Enabled = true; if (listBox2.Items.Count = 0)/當右列表框為空時左移命令按鈕不可用 button3.Enabled = false; button4.Enabled = false; else/當右列表框不為空時左移命令按鈕可用 button3.Enabled

55、 = true; button4.Enabled = true; ,private void button1_Click(object sender, EventArgs e) if (listBox1.SelectedIndex = 0) /將左列表框中選中項移到右列表框中 listBox2.Items.Add(listBox1.SelectedItem); listBox1.Items.RemoveAt(listBox1.SelectedIndex); enbutton();/調用enbutton()方法 private void button2_Click(object sender,

56、EventArgs e) foreach (object item in listBox1.Items)/將左列表框中所有項移到右列表框中 listBox2.Items.Add(item); listBox1.Items.Clear(); enbutton();/調用enbutton()方法 ,private void button3_Click(object sender, EventArgs e) if (listBox2.SelectedIndex = 0) /將右列表框中選中項移到左列表框中 listBox1.Items.Add(listBox2.SelectedItem); list

57、Box2.Items.RemoveAt(listBox2.SelectedIndex); enbutton();/調用enbutton()方法 private void button4_Click(object sender, EventArgs e) foreach (object item in listBox2.Items)/將右列表框中所有項移到左列表框中 listBox1.Items.Add(item); listBox2.Items.Clear(); enbutton();/調用enbutton()方法 ,運行界面,這種控件有兩部分組成,即一個文本框和一個列表框。文本框可以用來顯示當前選中的條目,如果文本框可以編輯,則可以直接輸入選擇的條目。單擊文本框旁邊帶有向下箭頭的按鈕,則會彈出列表框,使用鍵盤或者鼠標可以在列表框中選擇條目。 常用屬性: 1 Text屬性、Items屬性、DropDownStyle屬性。 其中DropDownStyle屬性有: Simple:同時顯示文本框和列表框,文本框可以被編輯。 DropDown:只顯示文本框,需要通過鍵盤或者鼠標打開列 表框,文本框可以被編輯。 DropDownList:只顯示文本框,需要通過鍵盤或者鼠標打 開列表框,文本框不可以被

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論