教學材料《編程教育》-二_第1頁
教學材料《編程教育》-二_第2頁
教學材料《編程教育》-二_第3頁
教學材料《編程教育》-二_第4頁
教學材料《編程教育》-二_第5頁
已閱讀5頁,還剩221頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目三自制記事本某軟件公司開發了一套系統,其中想要嵌入一個類似于Windows系統所自帶的記事本程序,但系統所帶的記事本程序不能同時打開多個文檔。程序員小季準備自己開發一個記事本軟件。【項目描述】制作如圖3-1所示的自制記事本,涉及多文檔窗體(MDI)。本項目主要有兩個任務:①制作主窗體和了窗體;②添加各項功能。【項目需求】建議配置:2.2GHz或速度更快的CPU,1GB或更大容量的RAM、分辨率1280×1024的顯示器、7200RPM或更高轉速的硬盤。下一頁返回項目三自制記事本操作系統:WindowsXP以上。開發軟件:VisualStudio2005/2008中文版(含MSDN)。【相關知識點】建議課時:4節課。相關知識:控件基本控件屬性與事件、多文檔窗體的實現。【項目分析】程序除了基本的文件打開、保存功能以外,還應具備文本設置功能和多文檔窗口的功能。制作記事本的主要步驟:①制作主窗體和子窗體;②添加各項功能。上一頁下一頁返回項目三自制記事本任務一制作主窗體和子窗體【任務描述】MDI編程就是要在主窗體中能夠新建一個MDI窗體,并A能夠對主窗體中的所有MDI窗體實現層疊、水平平鋪和垂直平鋪。雖然這些操作比較基本,但卻是程序設計中的要點和重點。【任務實施】①新建一個Windows項目,在模板中選擇“Windows應用程序”,將項目名稱設為NotePadEx,位置設為“E:\ECspharpApp\Examples",如圖3-2所示。②設置該窗體屬性,如表3-1所示。③加入MenuStrip控件到frmMain中,設置Items屬性,如圖3-3所示。上一頁下一頁返回項目三自制記事本選中“文件FToolStripMenultem”,設置其DropDownltems屬性,如圖3-4所示。選中“編輯EToolStripMenultem”,設置其DropDownltems屬性,如圖3-5所示。選中“窗口WToolStripMenultem”,設置其DropDownltems屬性,如圖3-6所示。④添加ToolStrip控件,編輯Items屬性,如圖3-7所示。其中,“字體”和“字體大小”為ComboBox類型,其他為Button類型。Button類型的快捷按鈕選擇合適的Image圖片,效果如圖3-8所示。⑤添加子窗體frmChild。選擇“項目”→“添加Windows窗體”,設置名稱為frmChild.cs。添加RichTextBox控件,設置名稱為rtbText,其Dock屬性設置為Fill。上一頁下一頁返回項目三自制記事本frmChild.cs代碼文件更改如下:上一頁下一頁返回項目三自制記事本⑥在主窗體中打開子窗體,代碼如下:上一頁下一頁返回項目三自制記事本提示/備注MDI編程中,首先要設定主窗體是一個MDI窗體的容器,因為只有如此才能夠在此主窗體上面添加MDI窗體,從而實現對MDI編程,具體實現語句如下:this.IsMdiContainer=true上一頁下一頁返回項目三自制記事本任務二添加各項功能【任務描述】程序中需要添加基本的文本設置功能,包括字體、段落,能對打開的多個文檔進行布局以便查看,能保存簡單文本和富文本。【任務實施】1.字體設置在字體設置之前,首先要在窗體加載的時候填充字體組合框tscbFontFamily和字體大小組合框tscbFontSize中的Items屬性,具體代碼如下:上一頁下一頁返回項目三自制記事本上一頁下一頁返回項目三自制記事本添加tscbFontFamily控件SelectedlndexChanged事件如下:上一頁下一頁返回項目三自制記事本添加tscbFontSize控件SelectedlndexChanged事件如下:上一頁下一頁返回項目三自制記事本加粗字體按鈕tsbBold的Click事件代碼如下:上一頁下一頁返回項目三自制記事本Font構造函數中,學習者可能對oldFont.Style&~FontStyle.Bold存在疑問,解釋如下。其實FontStyle就是一個一進制數。假設000001為斜體,000010為粗體,000011既粗又斜。首先對表示粗體的000010取反,就成了111101,然后再與原來字體的Style進行按位與,按位與的特點就是如果前后兩個一進制數的某一位都為1,結果才為1,很顯然可以看出來,任何數與111101進行按位與的話,結果就是把第一位置0,其他位不變,這樣就達到了取消黑體的效果。按位或運算“|”的特點就是如果前后兩個一進制數的某一位為1,結果就為1,oldFont.Style|FontStyle.Bold原理不再贅述,請學習者自己思考。上一頁下一頁返回項目三自制記事本傾斜字體按鈕tsbltalic的Click事件代碼如下:上一頁下一頁返回項目三自制記事本上一頁下一頁返回項目三自制記事本字體下劃線按鈕tsbUnderLine的Click事件代碼如下:上一頁下一頁返回項目三自制記事本上一頁下一頁返回項目三自制記事本2.段落設置左對齊按鈕tsbLeft的Click事件代碼如下:上一頁下一頁返回項目三自制記事本居中按鈕tsbMid的Click事件代碼如下:上一頁下一頁返回項目三自制記事本右對齊按鈕tsbRight的Click事件代碼如下:上一頁下一頁返回項目三自制記事本3.顏色設置添加ColorDialog控件colorDialog1,添加Click事件如下:上一頁下一頁返回項目三自制記事本4.窗口布局層疊菜單“層疊CToolStripMenultem”的Click事件代碼如下:垂直平鋪菜單“垂直平鋪VToolStripMenultem”的Click事件代碼如下:上一頁下一頁返回項目三自制記事本水平平鋪菜單“水平平鋪HToolStripMenultem”的Click事件代碼如下:排列圖標菜單“排列圖標AToolStripMenultem”的Click事件代碼如下:上一頁下一頁返回項目三自制記事本全部關閉菜單“全部關閉LToolStripMenultem”的Click事件代碼如下:上一頁下一頁返回項目三自制記事本5.文件保存文件可以以txt和rtf兩種方式保存,在保存的時候用戶可以選擇,程序中擊要判斷。自定義以下方法:上一頁下一頁返回項目三自制記事本上一頁下一頁返回項目三自制記事本“保存”菜單“保存SToolStripMenultem”的Click事件代碼如下:上一頁下一頁返回項目三自制記事本“另存為”菜單“另存為AToolStripMenultem”的Click事件代碼如下:上一頁下一頁返回項目三自制記事本其中調用了自定義方法IsExistChildForm,作用是當在另存文件的時候,判斷該文件是否處于打開狀態,代碼如下:上一頁下一頁返回項目三自制記事本6.打開文件自定義方法,代碼如下:上一頁下一頁返回項目三自制記事本7.“編輯”菜單各個功能代碼如下:上一頁下一頁返回項目三自制記事本上一頁下一頁返回項目三自制記事本8.其他功能當光標在文檔中的文本上時,若文本加粗,則加粗按鈕被選中;若文本傾斜,則傾斜按鈕被選中;若文本加下劃線,則下劃線按鈕被選中。編寫自定義方法,代碼如下:上一頁下一頁返回項目三自制記事本在程序中擊要的地方,可以用下面語句可以使用以上方法:fc.rtbTemp.SelectionChanqed+=newEventHandler(rtbTemp_SelectionChanqed);【控件介紹】1.RichTextBox控件文本編輯和閱讀是應用軟件最常用的功能之一,.Net中提供了兩個最基本的文本輸入控件:TextBox控件和RichTextBox控件。TextBox控件提供簡單的文本編輯和閱讀支持,可以進行多行顯示,也可以設置字體、字號、顏色等信息,但這些信息并不能保存并記錄到文件中,TextBox控件的使用相當簡單,這單就不再進一步介紹。上一頁下一頁返回項目三自制記事本顧名思義,RichTextBox控件也是用于文本編輯和閱讀的,但是它比TextBox功能強大,可以編輯RTF格式的文檔信息。可以利用RichTextBox控件的LoadFile加載文件顯小到控件中,例如:fc.rtbTemp.LoadFile(fileName,RichTextBoxStreamType.RichText);2.MenuStrip控件MenuStrip控件是應用程序菜單結構的容器。MenuStrip派生于ToolStrip類,在建立菜單系統時,要給MenuStrip添加ToolStripMenu對象,這可以在代碼中完成,也可以在VisualStudio的設計器中進行。把一個MenuStrip控件拖放到設計器的一個窗體中,MenuStrip就允許直接在菜單項上輸入菜單文本。上一頁下一頁返回項目三自制記事本MenuStrip控件只有兩個額外的屬性:GripStyle使用ToolStripGripStyle枚舉把柵格設置為可見或隱藏,MdiWindowListltem屬性提取或返回ToolStripMenultem。這個ToolStripMenultem是在MDI應用程序中顯示所有已打開窗口的菜單。3.ToolStrip控件ToolStrip控件是一個用于創建工具欄、菜單結構和狀態欄的容器控件。ToolStrip直接用于工具欄,還可以用作MenuStrip和StatusStrip控件的基類。上一頁下一頁返回項目三自制記事本ToolStrip控件在用于工具欄時,使用一組基于抽象類ToolStripltem的控件。ToolStripltem可以添加公共顯示和布局功能,并管理控件使用的大多數事件。ToolStripltem派生于System.ComponentModel.Component類,而不是Control類。基于ToolStripltem的類必須包含在基于ToolStrip的容器中。Image和Text是要設置的最常見屬性。Image可以用Image屬性設置,也可以使用ImageList控件,把它設置為ToolStrip控件的ImageList屬性。然后就可以設置各個控件的Imagelndex屬性。上一頁下一頁返回項目三自制記事本ToolStripltem上文本的格式化用Font,TextAlign和TextDirection屬性來處理。TextAlign設置文本與控件的對齊方式,它可以是ControlAlignment枚舉中的任一值,默認為MiddleRighto。TextDirection屬性設置文本的方向,其值可以是ToolStripTextDirection枚舉中的任一值,包括Horizontal、Inherit、Vertical270和Vertical90,其中Vertical270把文本旋轉270°,Vertical90把文本旋轉90°。DisplayStyle屬性控制在控件上是顯示文本、圖像、文本和圖像,還是什么都不顯示。在AutoSize設置為true時,ToolStripltem會重新設置其大小,確保只使用最少量的空間。上一頁下一頁返回項目三自制記事本4.OpenFileDialog控件OpenFileDialog控件有以下基本屬性。InitialDirectory:對話框的初始目錄。Filter:要在對話框中顯示的文件篩選器,如“文本文件(*.txt)|*.txt|所有文件(*.*)||*.*”。Filterlndex:在對話框中選擇的文件篩選器的索引,如果選第一項就設為1。RestoreDirectory:控制對話框在關閉之前是否恢復當前目錄。FileName:第一個在對話框中顯示的文件或最后一個選取的文件。Title:將顯示在對話框標題欄中的字符。AddExtension:是否自動添加默認擴展名。上一頁下一頁返回項目三自制記事本CheckPathExists:在對話框返回之前,檢查指定路徑是否存在。DefaultExt:默認擴展名。DereferenceLinks:在從對話框返回前是否取消引用快捷方式。5.SaveFileDialog控件SaveFileDialog與OpenFileDialog控件比較,屬性基本相似,不再贅述。6.ColorDialog控件ColorDialog控件有以下基本屬性。A11owFullOpen:禁止和啟用“自定義顏色”按鈕。FullOpen:控制最初是否顯小對話框的“自定義顏色”部分。ShowHelp:是否顯示“幫助”按鈕。Color:在對話框中顯示的顏色。上一頁下一頁返回項目三自制記事本SolidColorOnly:是否只能選擇純色。【項目小結】通過記事本項目的設計,學習者學習了多文檔窗體的相關知識。多文檔窗體程序可以在任一時刻在不同的窗口中保存多個已打開的文檔,其他與單文檔窗體程序大同小異。上一頁返回項目四制作簡易打地鼠界面打地鼠游戲深受廣大小朋友的喜愛,身為某IT公司程序員的小王決定為自己的兒子開發這款軟件,一來鍛煉孩子的反應能力,二來增加孩子學習的動力。小王決定在C#中用Button控件來模擬田地,通過Button控件顏色的變化來模擬地鼠的出現與消失。【項目描述】制作如圖4-1所示的簡易打地鼠界面,本項目主要有三個任務:①制作打地鼠游戲靜態界面;②隨機顯示地鼠;③游戲計時。下一頁返回項目四制作簡易打地鼠界面【項目需求】建議配置:2.2GHz或速度更快的CPU,1GB或更大容量的RAM、分辨率1280×1024的顯示器、7200RPM或更高轉速的硬盤。操作系統:WindowsXP以上。開發軟件:VisualStudio2005/2008中文版(含MSDN)。【相關知識點】建議課時:4節課。相關知識:控件命名技巧、基本控件屬性、隨機數類以及計數器的使用。上一頁下一頁返回項目四制作簡易打地鼠界面【項目分析】簡易打地鼠游戲中,可以用按鈕來模擬地鼠可能出現的位置,紅色的按鈕表示當時地鼠的位置,地鼠的位置按某個頻率在一定的范圍內隨機出現。制作簡易打地鼠界面的主要步驟:①制作打地鼠游戲靜態界面;②隨機顯示地鼠;③游戲計時。上一頁下一頁返回項目四制作簡易打地鼠界面任務一制作打地鼠游戲靜態界面【任務描述】新建項目,并在窗體上制作程序界面。【任務實施】①新建一個Windows項目,在模板中選擇“Windows應用程序”,將項目名稱設為SimpleBeatHamster,位置設為“E:\CspharpApp\Examples”,如圖4-2所示。②設置該窗體屬性,如表4-1所示。③在VisualStudio2005的主界面,系統提供了一個默認的窗體。通過工具箱向其中添加各種控件來設計應用程序的界面。具體操作是,用鼠標按住工具箱擊要添加的控件,然后拖放到窗體中即可。上一頁下一頁返回項目四制作簡易打地鼠界面在窗體上添加3個Panel控件,自上而下分別命名為:pnlTop,pnlBody和pnlBottom。設置pnlTop的Dock屬性值為Top,pnlBody的Dock屬性值為Fill,pnlBottom的Dock屬性值為Bottom,如圖4-3所示。說明:Panel控件就是包含其他控件的控件。把控件組合在一起,放在一個面板上,將更容易竹理這些控件,例如,可以禁用面板,從而禁用該面板上的所有控件。Panel控件派生于ScrollableControl所以還可以使用AutoScroll屬性。如果可用區域上有過多的控件要顯示,就可以把它們放在一個面板上,并把AutoScroll屬性設置為true,這樣就可以滾動所有的控件了。上一頁下一頁返回項目四制作簡易打地鼠界面面板在默認情況下不顯示邊框,但把BorderStyle屬性設置為不是none的其他值,就可以使用面板可視化地組合相關的控件,這會使用戶界面更友好。④pnlTop上添加兩個Label(標簽)控件:一個用來作為說明性文字,Text屬性為“剩余時間(秒):”;另一個用來動態顯示游戲剩余時間,name屬性為1blTime。如圖4-4所示。上一頁下一頁返回項目四制作簡易打地鼠界面說明:Label控件一般用于給用戶提供描述文本,通常標簽和文本框一起使用。標簽為用戶提供了在文本框中輸入的數據類型的描述。標簽控件總是只讀的,用戶不能修改Text屬性的字符串值,但是,可以在代碼中修改Text屬性。在Text屬性中,給一個字符前面加上宏符號&時,標簽控件中的該字母就會加上下劃線,按下Alt鍵和帶有下劃線的字母就會把熱點移動到tab順序的下一個控件上。如果Text屬性的文本包含一個宏符號,就應添加第一個宏符號,其后的字母將不帶下劃線,例如,如果標簽文本是Nuts&Bolts,就應把屬性設置為Nuts&&Bolts。AutoSize屬性是一個布爾值,指定標簽是否根據標簽的內容自動設置其大小。例如,在多語言應用程序中,Text屬性的長度會根據當前語言的不同而變化,此時就可以使用這個屬性。上一頁下一頁返回項目四制作簡易打地鼠界面⑤pnlBody上添加9個Button控件,其Width和Height屬性值都設為75,布局成如圖4-5所示游戲界面效果。說明:Button類表示簡單的命令按鈕,派生于ButtonBase類。該類最常見的用法是編寫處理按鈕Click事件的代碼。下面的代碼執行Click事件的處理程序。在單擊按鈕時,會彈出一個顯示按鈕名稱的消息框。上一頁下一頁返回項目四制作簡易打地鼠界面按鈕可以包含圖像和文本。圖像通過ImageList對象提供(在項目五中詳細解釋)。Text和Image都包含Align屬性,用以對齊按鈕上的文本和圖像。提示/備注在選擇控件的時候,可以同時按住Ctrl或者Shift鍵,同時選中多個控件,統一設置空間的共同屬性。也可以通過鼠標拖動的方式選中多個控件。上一頁下一頁返回項目四制作簡易打地鼠界面【窗體、控件的常用屬性】1.窗體常用屬性①AcceptButton:按Enter鍵時的默認按鈕。②CancelButton:按Esc鍵時觸發的按鈕。③FormaorderStyle:窗體樣式。當確定Windows窗體的外觀時,有兒種邊框樣式可供選擇,如表4-2所示。通過更改FormBorderStyle屬性,可控制和調整窗體的大小。另外,設置FormBorderStyle屬性還會影響標題欄如何顯示及標題欄上出現什么按鈕。上一頁下一頁返回項目四制作簡易打地鼠界面④HelpButton:是否有“幫助”按鈕。⑤Icon:窗體最小化時的圖標。⑥Opacity:設置窗體的透明度。⑦StartPosition:窗體第一次出現時的位置,一般將該屬性值設為Center。⑧Text:窗體標題欄文字。⑨WindowState:窗體顯示狀態。2.控件共同常用屬性大多數控件屬性都派生于System.Windows.Forms.Control類,所以它們都有一些共同的屬性,如表4-3所示。上一頁下一頁返回項目四制作簡易打地鼠界面控件能對用戶或應用程序的某些行為做出響應,這些行為稱為事件。Control類的常見事件如表4-4所示。【窗體、控件的命名規則】關于窗體和空間的命名規則,沒有強制硬性規定必,_如何,但為了便于程序的維護,編者建議讀者按以下規則命名。1.命名方法控件名簡寫+英文描述,英文描述首字母大寫。2.部分控件名簡寫(如表4-5所示)上一頁下一頁返回項目四制作簡易打地鼠界面任務二隨機顯示地鼠【任務描述】打地鼠游戲難度之一就是地鼠在指定的范圍之內的隨機出現,本次任務將采用紅色按鈕來表示地鼠的位置。【任務實施】①地鼠的位置是隨機出現的,C#中提供了Random類,我們可以通過Random對象,調用特定的方法產生隨機數。IntrndNum;Randomrnd=newRandom()rndNum=rnd.Next(9);上一頁下一頁返回項目四制作簡易打地鼠界面②地鼠出現的時間間隔,我們可以用C#提供的Timer控件來實現,擊要用到其兩個重要屬性和一個事件,如圖4-6所示。Enabled:控件是否可用,默認值為False。本任務中將tmrHamster控件該屬性設置為False(不可用)。Interval:觸發Timer控件Tick事件的事件間隔,單位ms。本任務中將tmrHamster控件該屬性設置為300。Tick事件:每當經過指定的時間間隔時發生。本任務在此事件中添加如下代碼:pnlBody.Controls[rndNum].BackColor=SystemColors.Control;//清除上次地鼠的位置上一頁下一頁返回項目四制作簡易打地鼠界面

rndNum=rnd.Next(9);//產生隨機位置

pnlBody.Controls[rndNum].BackColor=Color.Red;//新位置出現地鼠說明:該項目中用按鈕的顏色變化來模擬地鼠的位置,當按鈕為紅色的時候表示該按鈕所在位置出現地鼠,若為系統顏色則無地鼠。tmrHamster_Tick事件的完整代碼如下:上一頁下一頁返回項目四制作簡易打地鼠界面提示/備注除了可以用Button控件的BackColor屬性來模擬地鼠,我們還可以用Image屬性來形象生動地模擬。【理論知識】1.Random類由于大部分的游戲都會涉及隨機性的事件,Random類是程序員經常使用的一個類。(1)公共構造方法Random():用與時問相關的默認種了值,初始化Random類的新實例。默認種了值是從系統時鐘派生而來的。上一頁下一頁返回項目四制作簡易打地鼠界面Random(intSeed):使用指定的種了值初始化Random類的新實例。Seed是用來計算偽隨機數序列起始值的數字。如果指定的是負數,則使用其絕對值。如果應用程序擊要不同的隨機數序列,則使用不同的種子值貢復調用此構造函數。一種產生唯一種子值的方法是使它與時間相關。例如,從系統時鐘派生出種子值。但是,如果應用程序在一個較快的計算機上運行,則該計算機的系統時鐘可能沒有時間在此構造函數的調用之間進行更改,Random的不同實例的種子值可能相同。這種情況下,應用一個算法來區分每個調用的種子值。(2)公共方法Next:該方法返回隨機數,有三個重載方法。上一頁下一頁返回項目四制作簡易打地鼠界面上一頁下一頁返回項目四制作簡易打地鼠界面2.ControlsControls屬性返回Control.ControlCollection類的一個實例,Controls是一個集合,其元素代表容器中的控件。Controls提供了很多有用的屬性和方法,例如,Count屬性用于表明集合中的控件數量,Add方法可以把一個控件添加到它的集合中。假如知道某個控件在容器中的index,那么就可以用object.Controls[index]來選中這個控件。例如:rndNum=rnd.Next(9):pnlBody.Controls[rndNum].BackColor=Color.Red;上一頁下一頁返回項目四制作簡易打地鼠界面任務三設計游戲計時【任務描述】給打地鼠游戲添加計時功能是必需的,通過計時功能來增加趣味性和挑戰性。【任務實施】①添加一個Timer控件,命名為:tmrTimeLeft,設置其Interval屬性值為1000。②添加Tick事件,代碼如下:上一頁下一頁返回項目四制作簡易打地鼠界面上一頁下一頁返回項目四制作簡易打地鼠界面注意:游戲結束后,需要把最后的地鼠顯示效果清除,這個工作可以放在tmrTimeLeft_Tick中來完成。提示/備注請試一下,游戲過程中,如何暫停游戲?通過嘗試,充分理解控件的屬性以及全局變量的用處。【項目小結】學習者從了解C#中的Windows窗體開始,學習了Windows窗體和常用控件的基本屬性,了解了控件的命名規則,學習了如何利用Random類產生隨機數和定時器控件的屬性、事件,并掌握了如何將一者結合起來完成某個任務。通過本項目,學生能學習到Windows窗體和常用控件的基本屬性,掌握產生隨機數的基本原理和定時器的工作機制,為后續的高級打地鼠游戲打下了基礎。上一頁返回項目五高級打地鼠游戲實現在為兒子開發的簡易打地鼠游戲的基礎上,為了增加游戲的挑戰性和趣味性,經過思考,小王決定進一步完善游戲界面和功能。【項目描述】制作如圖5-1所示的高級打地鼠游戲,要求有闖關、游戲計時計分等功能。該項目主要有五個任務:①制作打地鼠游戲靜態界面;②類的繼承的實現;③動態增加控件;④隨機顯示地鼠;⑤游戲計時與計分。下一頁返回項目五高級打地鼠游戲實現【項目需求】建議配置:2.2GHz或速度更快的CPU、1GB或更大容量的RAM、分辨率1280×1024的顯示器、7200RPM或更高轉速的硬盤。操作系統:WindowsXP以上。開發軟件:VisualStudio2005/2008中文版(含MSDN)。【相關知識點】建議課時:10節課。相關知識:類的繼承;動態添加控件;委托與事件。上一頁下一頁返回項目五高級打地鼠游戲實現【項目分析】高級打地鼠游戲中,可以用按鈕來模擬地鼠可能出現的位置,通過按鈕上顯示圖片的改變來反應地鼠的位置,地鼠的位置按某個頻率在一定的范圍內隨機出現。另外游戲還可以計分,達到一定的分數可以到達下一關。制作高級打地鼠界面的主要步驟:①制作打地鼠游戲靜態界面;②類的繼承的實現;③動態增加控件效果的實現;④隨機顯示地鼠;⑤游戲計時與計分。上一頁下一頁返回項目五高級打地鼠游戲實現任務一制作打地鼠游戲靜態界面【任務描述】新建項目,并在窗體上制作程序界面。【任務實施】①新建一個Windows項目,在模板中選擇“Windows應用程序”,將項目名稱設為AdvancedBeatHamster,位置設為“E:\ECspharpApp\Examples",如圖5-2所示。②設置該窗體屬性,如表5-1所示。上一頁下一頁返回項目五高級打地鼠游戲實現③在窗體上添加3個Panel控件,自上而下分別命名為pnlTop、pnlBody和pnlBottom,其Dock屬性值依次為Top、Fill和Bottom。在pnlTop上添加4個Label控件,Name屬性依次為1blLeftTime(顯示游戲剩余時間)、1b1C1ickNum(顯示鼠標點擊數)、1b1HitNum(顯示擊中地鼠數)和1blLevel(顯示當前關數)。在pnlBottom上添加一個Button控件,Name屬性設置為btnStart。界面效果如圖5-3所示。④將圖片文件“png-1385.png","png-1386.png”復制到E:\CSharpApp\Examples\AdvancedBeatHamster\AdvancedBeatHamster\bin\Debug下。上一頁下一頁返回項目五高級打地鼠游戲實現⑤添加ImageList組件,選中Images屬性,打開圖像集合編輯器,添加Debug目錄下的兩種圖片,如圖5-4所示。單擊“確定”按鈕,然后將ImageList組件的ImageSize屬性設置為"64,64"。運行程序,效果如圖5-5所示。說明:ImageList組件就是一個圖像列表。一般情況下,這個屬性用于存儲一個圖像集合,這些圖像用作工具欄圖標、Button控件或者其他控件上的圖標。許多控件都包含ImageList屬性,這個屬性一般和Imagelndex屬性一起使用。ImageList屬性設置為ImageList組件的一個實例,Imagelndex屬性設置為ImageList中應在控件中顯示的圖像的索引。使用Imagelndex.Images屬性的Add方法可以把圖像添加到ImageList組件中。Images屬性返回一個ImageCollection。上一頁下一頁返回項目五高級打地鼠游戲實現ImageList組件兩個最常用的屬性是ImageSize和ColorDepth。ImageSize使用Size結構作為其值,其默認值是16×16,但可以取1~256的任意值。ColorDepth使用ColorDepth枚舉作為其值,顏色深度值可以從4位至32位。在介紹了ImageList組件后,順便介紹下Picturebox控件。Windows窗體PictureBox控件用于顯示位圖(.bmp)、PNG、GIF、JPEG、圖元文件(.wmf)或圖標格式(.ico)的圖片。顯示的圖片由Image屬性確定,SizeMode屬性控制圖像和控件彼此適合的方式。PictureBox控件的屬性可在設計時設置或運行時用代碼設置。那么如何在設計時設置顯示圖片?上一頁下一頁返回項目五高級打地鼠游戲實現在窗體上繪制PictureBox控件。在“屬性”窗口選擇Image屬性,單擊省略號按鈕顯示“打開”對話框。如果要查找特定文件類型(如.gif文件),在“文件類型”框中選擇該類型,然后選擇要顯示的文件。PictureBox控件通過SizeMode屬性選擇下列顯示方式:(a)Normal(默認),將圖片的左上角與控件的左上角對齊,如果圖像大于控件,則剪裁圖像的右下邊緣;(b)Centerlmage,使圖片在控件內居中,如果圖像大于控件,則剪裁圖片的外邊緣;(c)AutoSize,調整控件的大小以適合其顯示的圖片;上一頁下一頁返回項目五高級打地鼠游戲實現(d)Stretchlmage拉仲所顯示的圖片以適合控件。拉伸圖片(尤其是位圖格式的圖片。可能導致圖像質量受損。圖元文件(運行時繪制圖像的圖形指令列表)比位圖更適合于拉伸圖片。運行程序,效果如圖5-5所示。上一頁下一頁返回項目五高級打地鼠游戲實現任務二實現類的繼承【任務描述】本項目是用按鈕控件來模擬“田地”,程序中需要記錄某一時刻田地是否有地鼠出現的狀態,當然可以利用Button控件的Tag屬性來控制(比如當Tag取值0時無地鼠,Tag取值1時有地鼠)。本任務中,我們將繼承Button類,通過在派生類里增加新的屬性的方式來記錄某個時刻田地是否有地鼠的狀態。【任務實施】在任務一的基礎上,選擇VisualStudio菜單“項目”→“添加類”命令,如圖5-6所示。上一頁下一頁返回項目五高級打地鼠游戲實現打開如圖5-7所示“添加新項”對話框,選擇“類”,名稱輸入C1sButtonX.cs,然后單擊“添加”按鈕。C1sButtonX.cs文件初始代碼如下:上一頁下一頁返回項目五高級打地鼠游戲實現由于C1sButtonX將從Button類派生,所以擊要添加“usingSystem.Windows.Forms;",然后將C1sButtonX補充如下:上一頁下一頁返回項目五高級打地鼠游戲實現提示/備注這里對屬性引入了get和set訪問器,使用set訪問器可以為數據成員賦值,使用get訪問器可以檢索數據成員的值。在C#中,屬性可以提供公共數據成員的便利,而又不會帶來不受保護、不受控制以及未經驗證訪問對象數據的風險,這就是通過“訪問器”來實現的。【理論知識】屬性是提供對對象或類的特性進行訪問的成員。屬性的例了包括字符串的長度、字體的大小、窗口的熱點、用戶的名字等。屬性是域的自然擴展,兩者都是用相關類型成員命名,并且訪問域和屬性的語法是相同的。然而,與域不同,屬性不指示存儲位置;作為替代,屬性有存取程序,它指定聲明的執行來對它們進行讀或寫。上一頁下一頁返回項目五高級打地鼠游戲實現屬性是由屬性聲明定義的。屬性聲明的第一部分看起來和域聲明相當相似,第一部分包括一個get存取程序和一個set存取程序。在下面的例了中,ButtonX類定義了一個Caption屬性。上一頁下一頁返回項目五高級打地鼠游戲實現像Caption屬性一樣的可讀可寫的屬性包括get和set存取程序。當屬性的值要被讀出的時候,會調用get存取程序;當要寫屬性值的時候,會調用set存取程序。Properties在set存取程序中,屬性的新值賦給一個名為value的隱含參數。屬性的聲明是相對直截了當的,但是屬性顯示它自己的數值是在使用的時候而不是在聲明的時候。可以按照對域進行讀寫的方法來讀寫Caption屬性:上一頁下一頁返回項目五高級打地鼠游戲實現【知識拓展】C#中get,set的詳細說明get是讀取屬性時進行的操作,set是設置屬性時進行的操作。定義一個屬性如果只有get這個屬性就是只讀的;同樣,如果只有set屬性就是只寫的,當然只寫的屬性是沒有任何意義的。假設類是一個銀行,既能存錢也能取錢。上一頁下一頁返回項目五高級打地鼠游戲實現上一頁下一頁返回項目五高級打地鼠游戲實現m_money就像銀行單的自動存取款機,你看不見單面的money,但你能進行set(存錢)和get(取錢)。m_money是一個私有字段,是封裝在類中的,類以外的程序不能直接訪問,類的set和get成員是外部程序訪問類內部屬性的唯一方法,就像去銀行取錢,不能直接從銀行的保險柜單拿到錢,而是銀行營業人員把錢取出來給你的。屬性在調用者看來就像一個普通的變量,普通變量怎么用。它就怎么用。但作為類的設計者,你可以利用屬性來隱藏類中的一些字段,使外界只能通過屬性來訪問你的字段。可以通過屬性來限制外界對你的字段的存取,如果想讓用戶隨意存取你的字段,那么就實現set和get;如果只想讓用戶讀取字段,就只實現get;若只想讓用戶寫字段就只實現set;同時還可以在set和get中對用戶傳遞來的值進行一些驗證工作,以確保你的字段將含有正確的值。例如:上一頁下一頁返回項目五高級打地鼠游戲實現上一頁下一頁返回項目五高級打地鼠游戲實現可以看出,get/set有一種函數的特征。通過get/set,我們可以:①隱藏組件或類內部的真實成員;②用來建立約束的,如實現“有我沒你”這種約束;③用來響應屬性變化事件,當屬性變化時做某事,只要寫在set方法單就行了。可以用兩種途徑揭示類的命名屬性—通過域成員或者通過屬性。前者是作為具有公共訪問性的成員變量而被實現的;后者并不直接回應存儲位置,只是通過存取標志(accessors)被訪問。當想讀出或寫入屬性的值時,存取標志限定了被實現的語句。用于讀出屬性的值的存取標志記為關鍵字get,而要修改屬性的值的讀寫符標志記為set。上一頁下一頁返回項目五高級打地鼠游戲實現任務三動態增加控件【任務描述】隨著游戲等級的提高,游戲中的“田地”數也是要逐漸增多的,這樣就涉及游戲過程中,我們派生出的按鈕控件,將能要按一定數量動態地添加到窗體中。【任務實施】制作如圖5-8所示程序,文本框中輸入每行顯示的Button數,單擊“按要求重新添加控件”按鈕將添加指定數量的Button控件至窗體上。程序界面布局如圖5-9所示。給按鈕控件添加如下Click事件:上一頁下一頁返回項目五高級打地鼠游戲實現上一頁下一頁返回項目五高級打地鼠游戲實現變量guanNum用于控制添加多少自定義按鈕控件到pn1Body上。當guanNum等于2時,將添加4個按鈕控件到pnlBody上;當guanNum等于3時,將添加9個按鈕控件到pn1Body上,依此類推。添加控件到容器上一般需要指明控件的大小和位置屬性,例如以下代碼:btnMouse.Width=btnMouse.Heiqht=cellSize;//指定btnMouse的大小為cellSizebtnMouse.Top=j*cellSize;btnMouse.Left=i*cellSize;//指定btnMouse的顯示位置上一頁下一頁返回項目五高級打地鼠游戲實現為體現代碼的可讀性及可維護性,我們將此部分寫成如下自定義方法。

//生成新的游戲界而(動態增加控件)上一頁下一頁返回項目五高級打地鼠游戲實現上一頁下一頁返回項目五高級打地鼠游戲實現說明:(a)GenMouseCell(),自定義方法,用于動態生成控件并添加到Panel控件pnlBody上;(b)初始化控件的IsMouse屬性為false。給控件添加自定義事件,方法如下:btnMouse.Click+=newEventHandler(buttonX_Click);按鈕控件Click事件如下:上一頁下一頁返回項目五高級打地鼠游戲實現提示/備注為了使動態生成的控件能比較好地在Panel上排列,我們需要動態地控制控件的大小。這里用pnlBody.Width和guanNum來配合完成。嘗試當guanNum取值為1時,需要在pnlBody顯示4個控件該如何做?上一頁下一頁返回項目五高級打地鼠游戲實現任務四隨機顯示地鼠【任務描述】打地鼠游戲難度之一就是地鼠在指定的范圍之內的隨機出現,本任務將采用在按鈕控件上顯示地鼠圖片的方式表示地鼠的位置。【任務實施】①地鼠隨機位置的產生。首先依然需要初始化一個隨機類的實例,然后在指定的范圍內產生隨機數。本次任務引入了游戲等級的要求,由于游戲等級是變化的,導致“川地”數目也隨之變化,故隨機數的產生范圍也是變化的。如以下代碼中,rnd.Next((guanNum+1)*(guanNum+1))就是這個意思。上一頁下一頁返回項目五高級打地鼠游戲實現IntrndNumRandomrnd=newRandom()rndNum=rnd.Next((quanNum+1)*(quanNum+1));②地鼠出現的時間間隔。采用Timer控件tmrHamster,初始將tmrHamster控件該屬性設置為300。③用圖片的方式顯示地鼠。可以利用Button控件的image屬性來顯示圖片,本任務中動態添加的控件是從Button類中派生出來,所以該控件也具有image屬性。添加tmrHamster控件Tick事件如下:上一頁下一頁返回項目五高級打地鼠游戲實現運行結果如圖5-10所示。上一頁下一頁返回項目五高級打地鼠游戲實現任務五增加游戲計時與積分【任務描述】本次任務在游戲計時的基礎之上增加游戲積分的功能,達到一定積分可以進入下一關繼續游戲,達不到則繼續本關游戲。【任務實施】①添加一個Timer控件,命名為tmrTimeLeft,設置其Interval屬性值為1000。②添加Tick事件,代碼如下:上一頁下一頁返回項目五高級打地鼠游戲實現上一頁下一頁返回項目五高級打地鼠游戲實現上一頁下一頁返回項目五高級打地鼠游戲實現為增加可視性,本次任務同時引入了ProgressBar控件計時,如圖5-11所示。說明:ProgressBar控件是較長操作狀態的可視化表示。它指示用戶正在進行某個操作,用戶應等待。ProgressBar控件工作時要設置Minimum和Maximum屬性。這些屬性對應于進度指示器的最左端(Minimum)和最右端(Maximum)。設置Step屬性,以確定每次調用PerformStep方法時數值的增量。Value屬性返回ProgressBar的當前值。提示/備注請試一下,游戲界面能同時出現兩只地鼠并計時和積分。(為便于游戲,可適當更改地鼠出現的時間間隔)上一頁下一頁返回項目五高級打地鼠游戲實現【項目小結】學習者在項目四的基礎之上,通過引入圖片來顯示地鼠的方式來完善打地鼠游戲的界面,并在此基礎之上加以實現,繼續學習了如何利用Random類產生隨機數和定時器控件的屬性、事件,并掌握了如何將一者結合起來完成某個任務。通過本項目,學生能學習到部分控件的基本屬性與事件,訓練程序設計思維。上一頁返回項目六中國體彩“22選5”一個偶然的機會成就一個財富或幸福的傳奇。很多人都希望通過特殊渠道獲得幸福,很多人也都希望擺脫一種平庸、秩序的生活獲得一種特殊的幸福,這就是博彩心理。博彩它永遠會存在,只是存在的形式不同而已。本項目將模擬體彩中的“22選5”的出獎過程。【項目描述】制作如圖6-1所示的“22選5”的小軟件,本項目主要有二個任務:①制作“22選5”的程序界面;②模擬出數字過程;③顯示開獎結果。下一頁返回項目六中國體彩“22選5”【項目需求】建議配置:2.2GHz或速度更快的CPU,1GB或更大容量的RAM、分辨率1280×1024的顯示器、7200RPM或更高轉速的硬盤。操作系統:WindowsXP以上。開發軟件:VisualStudio2005/2008中文版(含MSDN)。【相關知識點】建議課時:8節課。相關知識:控件屬性及事件、隨機數類以及數據排序算法。上一頁下一頁返回項目六中國體彩“22選5”【項目分析】“22選5”電腦體育彩票(以下簡稱“22選5”)由國家體育總局體育彩票管理中心統一發行。購買“22選5”時,由購買者從“1~22”共22個號碼中選取5個不重復的號碼作為一注進行投注。制作“22選5”小軟件的主要步驟如下:①制作“22選5”的程序界面;②模擬出數字過程并顯示;③顯示開獎結果。上一頁下一頁返回項目六中國體彩“22選5”任務一制作“22選5”的程序界面【任務描述】新建項目,并在窗體上制作程序界面。【任務實施】①新建一個Windows項目,在模板中選擇“Windows應用程序”,將項目名稱設為AppChoose5in22,位置設為“E:\ECspharpApp\Examples”,如圖6-2所示。②設置該窗體屬性,如表6-1所示。③在VisualStudio2005的主界面,系統提供了一個默認的窗體。通過工具箱向其中添加各種控件來設計應用程序的界面,各控件主要屬性如表6-2所示。上一頁下一頁返回項目六中國體彩“22選5”窗體最終布局效果如圖6-3所示。說明:PictureBox控件用于顯示圖像。圖像可以是BMP、JPEG、GIF、PNG、元文件或圖標。PictureBox控件的屬性可在設計時設置或運行時用代碼設置。要加載PictureBox,首先創建一個基于Iamge的對象。例如,要把JPEG文件加載到PictureBox中,擊要編寫如下代碼:

BitmapmyJpeg=newBitmap(“myprc.jpg”);

pictureBoxl.工mage=(Image)myJpeg;

注意擊要轉換回Image類型,因為這是Image屬性所要求的。④添加frmMain_Load事件。為達到圖6-1的初始效果,擊要添加如下frmMain_Load事件:上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”提示/備注也可以利用PictureBox控件的Image屬性來顯示圖片。⑤為picStart控件添加動感效果。程序運行后,鼠標移動到picStart控件上,該控件會產生動態效果。為達到這個效果,可以添加picStart控件的MouseEnter和MouseLeave事件來配合完成。上一頁下一頁返回項目六中國體彩“22選5”提示/備注若要產生picStart控件的尺寸也會變化的動感效果,應如何實現?⑥移動窗體。本項目中,窗體沒有標題欄,這樣就存在一個問題:如何移動窗體?答案就是通過窗體的MouseMove和MouseDown配合完成。上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”任務二模擬出數字過程并顯示【任務描述】模擬數字出現過程,動態顯示數字的滾動,利用圖片顯示數字。【任務實施】①加入Timer控件tmrShowNumber,設置Interval屬性為10,添加Tick事件如下:上一頁下一頁返回項目六中國體彩“22選5”②加入Timer控件tmrSequence,設置Interval屬性為1000,添加Tick事件如下:上一頁下一頁返回項目六中國體彩“22選5”提示/備注在選擇五個數字的時候,不能有重復的數字出現,學習者需要考慮如何實現的。【理論知識】1.C#泛型編程之List本次任務使用了List。List表示可通過索引訪問的對象的強類型列表,提供用于對列表進行搜索、排序和操作的方法。List類是ArrayList類的泛型等效類。該類使用大小可按需動態增加的數組實現IList泛型接口。上一頁下一頁返回項目六中國體彩“22選5”2.List的初始化list<string>test=newlist<string>();//定義個空的List,這個空的list在默認情況下是小排)扣均。test.add("TT");test.capability屬性表示:獲取或設置該內部數據結構在不調整大小的情況下能夠保存的元素總數。Capacity是List在需要調整大小之前可以存儲的元素數,Count則是List中實際存儲的元素數。(調整大小就是說通過TrimExcess方法或者顯示設置Capability屬性的方法)上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”任務三顯示開獎結果【任務描述】開獎結果的五個數字將按升序排列的方式給出。【任務實施】①加入Timer控件tmrShowResult,設置Interval屬性為100。②添加tmrShowResult控件Tick事件如下:上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”提示/備注各個Timer控件的配合使用是比較重要的,學習者要仔細體會。【理論知識】排序算法一直是程序員所需要掌握的基本知識,本次任務中雖然并沒有使用排序算法,在此還是給出C#中一些基本排序算法,供學習者參考。上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”上一頁下一頁返回項目六中國體彩“22選5”【項目小結】通過本項目,學生能學習到Windows窗體和常用控件的基本屬性,深刻理解隨機數和多個定時器控件的綜合運用,了解了C#實現的經典排序算法。上一頁返回項目七公民身份證號碼生成與查詢目前國內不少郵箱、網盤等申請時要求填寫身份證號碼,而用戶又不想公開自己的真實信息,從而需要一個相對“真實”的身份證號碼。【項目描述】制作如圖7-1所示的身份證號碼生成與查詢系統,本項目主要有二個任務:①制作項目界面(包括數據綁定);②身份證號碼生成(隨機數,控件,生成的號碼編序號);③身份證號碼驗證與解讀。下一頁返回項目七公民身份證號碼生成與查詢【項目需求】建議配置:2.2GHz或速度更快的CPU,1GB或更大容量的RAM、分辨率1280×1024的顯示器、7200RPM或更高轉速的硬盤。操作系統:WindowsXP以上。開發軟件:VisualStudio2005/2008中文版(含MSDN)。【相關知識點】建議課時:10節課。相關知識:控件屬性與事件、隨機數類、控件數據綁定以及讀文件等。上一頁下一頁返回項目七公民身份證號碼生成與查詢【項目分析】身份證號碼生成與查詢系統包含身份證號碼生成和身份證號碼查詢兩大功能。中國公民的身份證號碼的編制是有規則的,在生成和查詢身份證號碼時,我們必須要遵守這個規則。另外需要說明,《中華人民共和國居民身份證法》規定,偽造、變造居民身份證屬違法行為。本軟件只為教學使用,學習者不能亂用此軟件生成號碼,利用生成的號碼用于網上購物、網上交易和虛擬則產買賣,否則后果自付。制作身份證號碼生成與查詢系統的主要步驟如下:①制作項目界面;②身份證號碼生成;③身份證號碼驗證與解讀。上一頁下一頁返回項目七公民身份證號碼生成與查詢任務一制作項目界面【任務描述】新建項目,并在窗體上制作程序界面。【任務實施】①新建一個Windows項目,在模板中選擇“Windows應用程序”,將項目名稱設為IDCard位置設為“E:\CspharpApp\Examples",如圖7-2所示。②設置該窗體屬性,如表7-1所示上一頁下一頁返回項目七公民身份證號碼生成與查詢③從圖7-1可以看出,項日中采用了分頁控件來使項日界面更緊讀。在窗體上添加TabControl控件,name屬性tclDCard。點開TabPages屬性,添加兩個tabPage頁,其Text屬性分別設置為“生成號碼”和“驗證解讀”,如圖7-3所示。設置完畢,單擊“確定”按鈕把分頁效果做好了,如圖7-4所示。④分別點選tabPagel(生成號碼)頁和tabPage2(驗證解讀)頁,選擇合適的控件并布局,效果可參考圖7-1,部分控件及屬性可參考表7-2和圖7-5。最終布局效果如圖7-6所示。上一頁下一頁返回項目七公民身份證號碼生成與查詢【控件介紹】1.TabControl控件TabControl允許把相關的組件組合到一系列tab頁面上。TabControl管理TabPages集合。有幾個屬性可以控制TabControl的外觀:Appearance屬性使用TabAppearance枚舉確定Tab的外觀,其值是F1atButtons,Buttons或Normal;Multiline屬性的值是一個布爾值,確定是否顯示多行Tab,如果Multiline屬性設置為False,而有多個Tab不能一次顯示出來,就提供一組箭頭,允許用戶滾動查看剩余的Tab。上一頁下一頁返回項目七公民身份證號碼生成與查詢在TabControl的TabPages集合中,TabPage的Text屬性是在Tab上顯示的內容。Text屬性也在重寫的構造函數中用作參數。一旦創建了TabPage頁,它基本上就是一個容器控件,用于放置其他控件。VisualStudio.NET中的設計器使用集合編輯器,很容易給TabControl控件添加TabPage,在添加每個頁面時都可以設置各種屬性,接著把其他了控件拖放到每個TabPage控件上。通過查看SelectedTab屬性可以確定當前的Tab。每次選擇新Tab時,都會引發Selectedlndex事件。通過監聽Selectedlndex屬性,再用SelectedTab屬性確認當前Tab,就可以根據每個Tab進行特定的處理。2.ComboBox控件和ListBox控件上一頁下一頁返回項目七公民身份證號碼生成與查詢ComboBox和ListBox都派生于ListControl類。這個類提供了一些基本的列表管理功能。Selectedlndex返回一個整數值,它對應于當前選中項目的索引。從列表中獲取值有點困難,在給列表控件添加條目時,不僅可以添加字符串值,還可以添加任意類型的對象。如果要添加的條目不是字符串,就必須設置另外兩個屬性;第一個是DisplayMember屬性,這個設置告訴ListControl在列表中顯小對象的哪個屬性;另一個是ValueMember屬性,它是要返回值的對象屬性。例如,如果要使用Countr)對象,它包含兩個屬性CountryName和CountryAbbreviation就應把DisplayMember設置為CountryName屬性,把ValueMember設置為CountryAbbreviation。在顯示列表時,就會看到國家名稱的列表,在使用SelectedValue屬性時,控件應返回列表中所選中國家的簡稱。上一頁下一頁返回項目七公民身份證號碼生成與查詢如果訪問Items屬性,就可以得到Country對象。Items屬性在控件上執行,在ListBox控件上,Items屬性返回ListBox.ObjectCollection,這是一個可以通過索引器引用的對象集合。所以,要獲取對象(不是ValueMember,而是對象本身),就可以使用下面的代碼:obj=listBox1.Items[listBox1.SelectedIndex];ComboBox的Items屬性返回ComboBox.ObjectCollectionoComboBox組合了編輯控件和列表框,通過把一個DropDownStyle枚舉值傳送給DropDownStyle屬性,就可以設置ComboBox的樣式。表7-3列出了DropDownStyle的各個值。上一頁下一頁返回項目七公民身份證號碼生成與查詢如果列表中的值比較寬,就可以使用DropDownWidth屬性改變控件下拉部分的寬度。MaxDropDownltems屬性設置在顯小列表的下拉部分時的最大項目數。FindString和FindStringExact方法是列表控件的另外兩個有用的方法。FindString在列表中查找以傳入字符串開頭的第一個字串;FindStringExact查找與傳入字符串匹配的第一個字符串。它們都返回找到的值的索引,如果沒有找到,就返回-1。它們還可以將要搜索的起始索引整數作為參數。上一頁下一頁返回項目七公民身份證號碼生成與查詢在列表控件中,最常用的事件是SelectedlndexChanged和SelectedValueChanged。這些事件是在用戶從列表中選擇新條目時發生。在列表中選擇了新條目后,就可以修改窗體的其他方面,以匹配新選中的條目。例如,使用Country列表,如果用戶從列表中選擇了一個新國家,就可以顯示該國家的地圖圖像。3.DateTimePicker控件DateTimePicke:允許用戶在許多不同的格式中選擇一個日期或時間值(或兩者)。可以以任何標準時間日期格式顯小基于DateTime的值。Format屬性帶一個DateTimePickerFormat枚舉,它可以把格式設置為Long,Short,Time或Custom。如果Format屬性設置為DateTimePicker-Format.Custom,就可以把CustomFormat屬性設置為表示格式的字符串。上一頁下一頁返回項目七公民身份證號碼生成與查詢DateTimePicke:還包含Text屬性和Value屬性。Text屬性返回DateTime值的文本表示,Value屬性返回DateTime對象。還可以用MinDate和Maxdate屬性設置日期所允許的最大值和最小值。在用戶單擊向下箭頭時,會顯示一個日歷,允許用戶選擇日歷中的一個日期。DateTimePicke:還包含一些屬性,這些屬性允許設置標題、月份背景色和前景色,改變日期的外觀。ShowUpDown屬性確定控件上是否顯示UpDown箭頭。單擊向上或向下箭頭就可以改變當前突出顯示的值。上一頁下一頁返回項目七公民身份證號碼生成與查詢4.RadioButton控件RadioButton(單選按鈕)一般用作一個組,有時稱為選項按鈕。單選按鈕允許用戶從幾個選項中選擇一個。當同一個容器中有多個RadioButton控件時,一次只能選擇一個按鈕。所以如果有3個選項,如Red,Green和Blue,如果Red選項被選中,而用戶單擊Blue,則Red會自動取消選中。Appearance屬性使用Appearance枚舉值,即Button或Normal。當選擇Normal時,單選按鈕看起來像一個小圓圈,在它的旁邊有一個標簽。選擇按鈕會填充圓圈,選擇另一個按鈕會取消對當前選中按鈕的選擇,使圓圈為空。當選中Button時,RadioButton控件看起來像一個標準按鈕,但工作方式類似于開關,選中是指熱點在位置中,取消選中是指正常狀態或熱點在位置外。上一頁下一頁返回項目七公民身份證號碼生成與查詢CheckedAlign屬性確定圓圈與標簽文本的相對位置,它可以在標簽的頂部、左右兩邊或下方。只要Checked屬性的值改變,就會引發CheckedChanged事件。這樣就可以根據控件的新值執行其他動作。提示/備注組合框的DisplayMember和ValueMember兩個屬性在實際應用中有著重要地位,請學習者反復仔細理解體會。接下來的任務中,我們將運用此屬性。上一頁下一頁返回項目七公民身份證號碼生成與查詢任務二生成身份證號碼【任務描述】身份證號碼的生成是有一定規則的。第一代身份證編碼由十七位數字本體碼和一位校驗碼組成,排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,二位數字順序碼和一位校驗碼,可以用字母表示為ABCDEFYYYYMMDDXXXR,其含義如下。①地址碼(ABCDEF:表示編碼對象常住戶日所在縣(市、旗、區)的行政區劃代碼,按規定執行。本任務中,將以文本文件的形式按一定格式排列給出。上一頁下一頁返回項目七公民身份證號碼生成與查詢②出生日期碼(YYYYMMDD:表示編碼對象出生的年、月、日,年、月、日分別用4位、2位(不足兩位加0),2(同上)位數字表示,之間不用分隔符。③順序碼(XXX):表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。④校驗碼(R),一位數字,通過前17位數字根據一定計算得出。【任務實施】1.行政區域數據綁定①搜索可用的文件(后綴.txt),代碼如下://自定義方法,用于檢索行政Ix_域劃分的文件上一頁下一頁返

溫馨提示

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

評論

0/150

提交評論