Môn Lập trình hướng đối tượng Trang 3 MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài thực hành số 9 1 Xây dựng Inherited control và ứng dụng dùng nó I Mục tiêu Giúp SV làm quen với cách thức xây dựng 1 Inherited c[.]
Trang 1MÔN : L P TRÌNH H Ậ ƯỚ NG Đ I T Ố ƯỢ NG Bài th c hành s 9.1 ự ố : Xây d ng Inherited control và ng d ng dùng nó ự ứ ụ
I M c tiêu : ụ
Giúp SV làm quen v i cách th c xây d ng 1 Inherited control gi i quy t ch c năng ớ ứ ự ả ế ứ
đ c thù c a mình b ng cách th a k đi u khi n đã có s n có tính năng g n gi ng.ặ ủ ằ ừ ế ề ể ẵ ầ ố
II N i dung : ộ
xây d ng 1 Inherited Control có tên là MyTextBox, nó là TextBox nh ng có th ho t ự ư ể ạ
đ ng 1 trong nhi u ch đ khác nhau :ộ ở ề ế ộ
1 Common (gi ng nh textbox c a Net), ố ư ủ
2 Text (ch cho nh p các ký t alphabet), ỉ ậ ự
3 NumInt (ch cho phép nh p các ký s ), ỉ ậ ố
4 NumReal (ch cho phép nh p các ký s và d u ch m th p phân).ỉ ậ ố ấ ấ ậ
III Chu n đ u ra : ẩ ầ
Sinh viên n m v ng và xây d ng thành th o các Inherited Control có ch c năng đ c ắ ữ ự ạ ứ ặ thù cũng nh xây d ng ng d ng dùng lai các Inherited Control.ư ự ứ ụ
IV Qui trình :
IV.1 Xây d ng Inherited control ự
1 Ch y VS Net, ch n menu File.Open.Project đ hi n th c a s duy t file Duy t và tìmạ ọ ể ể ị ử ổ ệ ệ file *.sln qu n lý Project "Windows Control Library" có s n t bài th c hành 9.1 đ m l iả ẵ ừ ự ể ở ạ Project này
2 Quan sát cây Project, chúng ta đã th y có m c LoginControl.cs qu n lý user control đãấ ụ ả xây d ng t bài th c hành 9.1 n ph i chu t vào g c c a cây Project trong c a sự ừ ự Ấ ả ộ ố ủ ử ổ
"Solution Explorer", ch n option Add.User Control đ t o m i 1 User Control, nh p tên làọ ể ạ ớ ậ MyTextBox.cs r i click button Add đ t o m i nó.ồ ể ạ ớ
3 Lúc này control m i ch là 1 vùng hình ch nh t tr ng D i chu t v m c MyTextBox.csớ ỉ ữ ậ ố ờ ộ ề ụ trong c a s Project, n ph i chu t trên nó r i ch n option "View Code" đ hi n th c aử ổ ấ ả ộ ồ ọ ể ể ị ử
s so n mã ngu n cho MyTextBox control.ổ ạ ồ
4 Thêm l nh đ nh nghĩa ki u li t kê các ch đ làm vi c c a MyTextBox :ệ ị ể ệ ế ộ ệ ủ
public enum ValidationType {
Common = 0, //gi ng nh TextBox bình thố ư ường
NumInt, //ch nh n các ký sỉ ậ ố
NumReal, //ch nh n các ký s và d u ch m th p phânỉ ậ ố ấ ấ ậ
Text //ch nh n các ký t chỉ ậ ự ữ
}
5 Hi u ch nh l i l nh đ nh nghĩa class MyTextBox đ th a k class TextBox (thay vìệ ỉ ạ ệ ị ể ừ ế UserControl nh m c đ nh) N i dung chi ti t c a class MyTextBox đư ặ ị ộ ế ủ ược li t kê cácệ ở slide sau
public partial class MyTextBox : TextBox {
bool fPoint;
//hàm contructor
public MyTextBox() : base() {
InitializeComponent();
//đăng ký hàm x lý s ki n KeyPressử ự ệ
this.KeyPress += new KeyPressEventHandler(OnKeyPress);
}
//đ nh nghĩa thu c tính ValidateFor miêu t ch đ làm vi cị ộ ả ế ộ ệ
private int intValidType = (int)ValidationType.Text;
public ValidationType ValidateFor {
Trang 2get { return (ValidationType)intValidType; }
set { intValidType = (int)value; }
}
//hàm x lý s ki n g phím KeyPressử ự ệ ỏ
protected void OnKeyPress(object sender,
KeyPressEventArgs e) {
//xác đ nh mã ký t đị ự ược nh pậ
char ch = e.KeyChar;
//ki m tra ch đ ho t đ ng đ ph n ngể ế ộ ạ ộ ể ả ứ
switch (intValidType) {
case (int)ValidationType.Common:
//n u là ki u t ng quát, thì không x lý thêm gì cế ể ổ ử ả
return;
case (int)ValidationType.NumInt:
//n u là ki u s nguyên thì ch nh n ký sế ể ố ỉ ậ ố
if (!Char.IsDigit(ch)) e.KeyChar = (char)0;
return;
case (int)ValidationType.NumReal:
//n u là ki u s th c thì ch nh n ký s + d u ế ể ố ự ỉ ậ ố ấ
if (Char.IsDigit(ch)) return;
if (ch == '.' && fPoint==false) {
fPoint = true; return;
}
e.KeyChar = (char)0;
return;
case (int)ValidationType.Text:
//n u là ki u chu i văn b n thì ch nh n ký t chế ể ỗ ả ỉ ậ ự ữ
ch = Char.ToLower(ch);
if (ch < 'a' || 'z' < ch) e.KeyChar = (char)0;
return;
} } //k t thúc l nh switch, hàm OnKeyPress, ế ệ
6 Ch n menu Build.Build Solution đ d ch và t o file th vi n ch a các user control N uọ ể ị ạ ư ệ ứ ế
có l i thì s a và d ch l i L u ý khi máy báo l i hàng l nh this.AutoScaleMode = thìỗ ữ ị ạ ư ỗ ở ệ hãy chú thích hàng l nh này hay xóa nó luôn cũng đệ ược
10 N u d ch thành công, file th vi n có tên là MyUserControls.dll s đế ị ư ệ ẽ ượ ạc t o ra trong thư
m c con Debug (hay Release tùy ch đ d ch) trong th m c ch a Project Ta nên copyụ ế ộ ị ư ụ ứ file này vào th m c chung ch a các file th vi n đ sau này dùng ti n l i h n.ư ụ ứ ư ệ ể ệ ợ ơ
IV.2 Xây d ng ng d ng dùng Inherited Control ự ứ ụ
1 Ch y VS Net, ch n menu File.New.Project đ hi n th c a s New Project.ạ ọ ể ể ị ử ổ
2 M r ng m c Visual C# trong TreeView "Project Types", ch n m c Windows, ch n iconở ộ ụ ọ ụ ọ
"Windows Application" trong listbox "Templates" bên ph i, thi t l p th m c ch a Projectả ế ậ ư ụ ứ trong listbox "Location", nh p tên Project vào textbox "Name:" (td UseMyTextBox), clickậ button OK đ t o Project theo các thông s đã khai báo.ể ạ ố
3 Form đ u tiên c a ng d ng đã hi n th trong c a s thi t k , vi c thi t k form là quáầ ủ ứ ụ ể ị ử ổ ế ế ệ ế ế trình l p 4 thao tác t o m i/xóa/hi u ch nh thu c tính/t o hàm x lý s ki n cho t ng đ iặ ạ ớ ệ ỉ ộ ạ ử ự ệ ừ ố
tượng c n dùng trong form.ầ
4 N u c a s ToolBox ch a hi n th chi ti t, ch n menu View.Toolbox đ hi n th nóế ử ổ ư ể ị ế ọ ể ể ị (thường n m bên trái màn hình) Click chu t vào button ằ ở ộ (Auto Hide) n m góc trênằ ở
ph i c a s ToolBox đ chuy n nó v ch đ hi n th thả ử ổ ể ể ề ế ộ ể ị ường tr c D i chu t vào trongự ờ ộ
c a s Toolbox, n ph i chu t đ hi n th menu l nh, ch n option "Choose Items" Khiử ổ ấ ả ộ ể ể ị ệ ọ
c a s "Choose Toolbox Items" hi n th , click chu t vào button Browse đ hi n th c a sử ổ ể ị ộ ể ể ị ử ổ duy t tìm file, hãy duy t tìm đ n th m c ch a file MyUserControls.dll v a xây d ngệ ệ ế ư ụ ứ ừ ự
Trang 3được trong các slide trước, ch n file dll r i click button OK đ "add" các usercontrol trongọ ồ ể
th vi n này vào c a s Toolbox c a Project ng d ng.ư ệ ử ổ ủ ứ ụ
5 Duy t tìm ph n t Label (trong nhóm Common Controls), ch n nó, d i chu t v v tríệ ầ ử ọ ờ ộ ề ị thích h p trong form và v nó v i kích thợ ẽ ớ ước mong mu n Hi u ch nh thu c tính Text =ố ệ ỉ ộ
"Nh p chu i b t kỳ :" N u c n, hãy thay đ i v trí và kích thậ ỗ ấ ế ầ ổ ị ướ ủc c a Label và Form
6 Duy t tìm ph n t MyTextBox (trong nhóm General cu i c a s Toolbox), ch n nó, d iệ ầ ử ở ố ử ổ ọ ờ chu t v v trí thích h p trong Form (bên ph i Label v a v ) và v nó v i kích thộ ề ị ợ ả ừ ẽ ẽ ớ ước mong mu n Vào c a s thu c tính c a đ i tố ử ổ ộ ủ ố ượng MyTextBox v a v , đ t thu c tínhừ ẽ ặ ộ (Name) = txtCommon, thu c tính ValidateFor = Common đ nó ho t đ ng ch đ nh pộ ể ạ ộ ở ế ộ ậ
ký t bình thự ường
7 L p 2 bặ ước 5 và 6 ba l n đ t o thêm 3 c p (Label, MyTextBox) khác, các MyTextBoxầ ể ạ ặ
t o m i l n lạ ớ ầ ượt có thu c tính ValidateFor = Text, NumInt, NumReal đ ho t đ ng trênộ ể ạ ộ
ho c chu i văn b n, ho c s nguyên, ho c s th c ặ ỗ ả ặ ố ặ ố ự
Đ i v i các đ i tố ớ ố ượng gi ng nhau, ta có th dùng k thu t Copy-Paste đ nhân b n vôố ể ỹ ậ ể ả tính chúng cho d dàng Sau khi thi t k xong, form ng d ng có d ng sau :ễ ế ế ứ ụ ạ
8 Ch n menu Debug.Start Debugging đ d ch và ch y ng d ng Hãy th nh p các lo i kýọ ể ị ạ ứ ụ ử ậ ạ
t vào các đ i tự ố ượng MyTextBox và đánh giá k t qu ế ả