LẬP TRÌNH TRÊN MÔI TRƯỜNG WINDOWS *** XỬ LÝ CONTROL Phạm Minh Tuấn pmtuan@fit.hcmuns.edu.vn 03/23/10 Khoa CNTT - ĐH KHTN 2 Nội dung trình bày Giới thiệu Tạo Control Delegate và Event 03/23/10 Khoa CNTT - ĐH KHTN 3 Giới thiệu Có 3 loại Control Extended Control Ví dụ: một Button mới có background thay đổi khi di chuyển chuột đến nó Composite Control Ví dụ: một control cho phép nhập vào địa chỉ cá nhân gồm số nhà, tên đường, phường, quận, thành phố… Custom Control Ví dụ: một control thể hiện đồng hồ máy tính 03/23/10 Khoa CNTT - ĐH KHTN 4 Tạo Control Tạo Extended Control Kế thừa từ lớp đối tượng tương ứng Bổ sung hoặc override các phương thức cần thiết Tạo Custom Control Kế thừa từ lớp Control Người viết chịu trách nhiệm về hình dạng và cách ứng xử của control Tạo Composite Control Kế thừa từ lớp UserControl Xác định các control con của nó Bổ sung hoặc override lại các phương thức cần thiết 03/23/10 Khoa CNTT - ĐH KHTN 5 Tạo Control Tạo Extended Control class MyButton:System.Windows.Forms.Button { … public MyButton() { … this.MouseEnter += new EventHandler(MyButton_MouseEnter); this.MouseLeave += new EventHandler(MyButton_MouseLeave); } void MyButton_MouseLeave(object sender, EventArgs e) { Image image = Image.FromFile(normalImageFile); if (image != null) this.BackgroundImage = image; } void MyButton_MouseEnter(object sender, EventArgs e) { Image image = Image.FromFile(highlightImageFile); if (image != null) this.BackgroundImage = image; } } 03/23/10 Khoa CNTT - ĐH KHTN 6 Tạo Control Tạo Custom Control class ClockControl:System.Windows.Forms.Control { … public ClockControl() { ………} void timer1_Tick(object sender, EventArgs e) { this.Invalidate(); } void ClockControl_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { string str = ""; str = DateTime.Now.Hour.ToString() +":" + DateTime.Now.Minute.ToString()+":" + DateTime.Now.Second.ToString(); e.Graphics.DrawString(str, this.Font, new SolidBrush(this.ForeColor), 0, 0); } } 03/23/10 Khoa CNTT - ĐH KHTN 7 Tạo Control Tạo Composite Control Thêm User Control vào project bằng cách chọn Project > Add > User Control. Đặt tên User Control đó (ví dụ: Diachi.cs) Thêm các control (textbox và label) thể hiện số nhà, đường, phường, quận, thành phố như sau: Dịch project (Ctrl + Shift + B) và chọn lại Form1. Trong tab Components của toolbox sẽ có 1 control mới được thêm vào có tên là Diachi. Kéo Control đó vào form và xử lý như mọi control bình thường khác. 03/23/10 Khoa CNTT - ĐH KHTN 8 Tạo Control Thêm các property cho control public string Sonha { get {return this.txtSonha.Text;} set {this.txtSonha.Text = value;} } Thêm các sự kiện cho control Sử dụng delegate và event 03/23/10 Khoa CNTT - ĐH KHTN 9 Delegate và Event Delegate Ngữ nghĩa tương tự con trỏ hàm Khai báo public delegate void AddressChangedHandler(string address); Event Khai báo public event AddressChangedHandler AddressChanged; “Phát” sự kiện if (AddressChanged != null) AddressChanged(str); 03/23/10 Khoa CNTT - ĐH KHTN 10 . LẬP TRÌNH TRÊN MÔI TRƯỜNG WINDOWS *** XỬ LÝ CONTROL Phạm Minh Tuấn pmtuan@fit.hcmuns.edu.vn 03/23/10 Khoa CNTT - ĐH KHTN 2 Nội dung trình bày Giới thiệu Tạo. ClockControl:System .Windows. Forms.Control { … public ClockControl() { ………} void timer1_Tick(object sender, EventArgs e) { this.Invalidate(); } void ClockControl_Paint(object sender, System .Windows. Forms.PaintEventArgs. cần thiết 03/23/10 Khoa CNTT - ĐH KHTN 5 Tạo Control Tạo Extended Control class MyButton:System .Windows. Forms.Button { … public MyButton() { … this.MouseEnter += new EventHandler(MyButton_MouseEnter);