LẬP TRÌNH TRÊN
MÔI TRƯỜNG WINDOWS
***
XỬ LÝ CONTROL
Phạm Minh Tuấn
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