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