Giáo trình thực hành Lập trình hướng đối tượng - Bài thực hành số 11.2: Xây dựng Inherited control và ứng dụng dùng nó

Trang 1  
MÔN : LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG  
Bài thực hành số 11.2 : 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,  
NumInt,  
//giống như TextBox bình thường  
//chỉ nhận các ký số  
NumReal,  
Text  
//chỉ nhận các ký số và dấu chấm thập phân  
//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  
Trang 2  
private int intValidType = (int)ValidationType.Text;  
public ValidationType ValidateFor {  
get { 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.  
Trang 3  
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 ₫ượ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ả.  
pdf 3 trang myanh 20080 Free
Bạn đang xem tài liệu "Giáo trình thực hành Lập trình hướng đối tượng - Bài thực hành số 11.2: Xây dựng Inherited control và ứng dụng dùng nó", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_thuc_hanh_lap_trinh_huong_doi_tuong_bai_thuc_hanh.pdf