LẬP TRÌNH TRÊN MÔI TRƯỜNG WINDOWS *** XỬ LÝ CONTROL Nội dung trình bày Giới thiệu Tạo Control Delegate Event Khoa CNTT - ĐH KHTN 12/30/15 Giới thiệu Có loại Control Extended Control Ví dụ: Button có background thay đổi di chuyển chuột đến Composite Control Ví dụ: control cho phép nhập vào địa cá nhân gồm số nhà, tên đường, phường, quận, thành phố… Custom Control Ví dụ: control thể đồng hồ máy tính Khoa CNTT - ĐH KHTN 12/30/15 Tạo Control Tạo Extended Control Tạo Custom Control Kế thừa từ lớp đối tượng tương ứng Bổ sung override phương thức cần thiết Kế thừa từ lớp Control Người viết chịu trách nhiệm hình dạng cách ứng xử control Tạo Composite Control Kế thừa từ lớp UserControl Xác định control Bổ sung override lại phương thức cần thiết Khoa CNTT - ĐH KHTN 12/30/15 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; } } Khoa CNTT - ĐH KHTN 12/30/15 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); } } Khoa CNTT - ĐH KHTN 12/30/15 Tạo Control Tạo Composite Control Thêm User Control vào project cách chọn Project > Add > User Control Đặt tên User Control (ví dụ: Diachi.cs) Thêm control (textbox label) thể số nhà, đường, phường, quận, thành phố sau: Dịch project (Ctrl + Shift + B) chọn lại Form1 Trong tab Components toolbox có control thêm vào có tên Diachi Kéo Control vào form xử lý control bình thường khác Khoa CNTT - ĐH KHTN 12/30/15 Tạo Control Thêm property cho control public string Sonha { get {return this.txtSonha.Text;} set {this.txtSonha.Text = value;} } Thêm kiện cho control Sử dụng delegate event Khoa CNTT - ĐH KHTN 12/30/15 Delegate Event Delegate Ngữ nghĩa tương tự trỏ hàm Khai báo public delegate void AddressChangedHandler(string address); Event Khai báo public event AddressChangedHandler AddressChanged; “Phát” kiện if (AddressChanged != null) AddressChanged(str); Khoa CNTT - ĐH KHTN 12/30/15 Khoa CNTT - ĐH KHTN 12/30/15 10 ... 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... tab Components toolbox có control thêm vào có tên Diachi Kéo Control vào form xử lý control bình thường khác Khoa CNTT - ĐH KHTN 12/30/15 Tạo Control Thêm property cho control public string Sonha... ĐH KHTN 12/30/15 Tạo Control Tạo Composite Control Thêm User Control vào project cách chọn Project > Add > User Control Đặt tên User Control (ví dụ: Diachi.cs) Thêm control (textbox label)