Ex-control

Chia sẻ bởi Soul Of Wind | Ngày 19/03/2024 | 9

Chia sẻ tài liệu: Ex-control thuộc Công nghệ thông tin

Nội dung tài liệu:

Các kỹ thuật xây dựng
controls mở rộng
Ngô Bá Nam Phương
[email protected]
Xây dựng control mở rộng
Có 3 cách xây dựng control mở rộng:
Tạo ra control mới bằng cách mở rộng control có sẵn của .NET ( visual inheritance hay extended control )
Kết hợp nhiều control có sẵn của .NET ( composite control )
Tự thiết kế và xây dựng control
Mở rộng control có sẵn
Nhằm thay đổi (modify) hoặc bổ sung chức năng cho một control bằng cách tạo ra control mới kế thừa từ lớp control này.
Control mới sẽ kế thừa các tính năng của control cơ sở cùng với các tính năng mở rộng của riêng nó
Ví dụ: tạo ra textBox chỉ cho phép nhập ký số,
Button hỗ trợ sự kiện hover.
Mở rộng control có sẵn
Tạo project mới dạng Windows Control Library
Mở rộng control có sẵn ( tt )
Bổ sung thêm thuộc tính mới
Mở rộng control có sẵn ( tt )
Tạo project WinForm mới để host extended control
Add reference control vừa mới tạo
Mở rộng control có sẵn ( tt )
Sử dụng Extended control
Add extened control vào thanh ToolBox


Drag drop đưa NewButton control vào Form


Xử lý sự kiện
Composite control
Là control được xây dựng bằng cách kết hợp nhiều control có sẵn
Kế thừa từ lớp UserControl ( đóng vai trò như Container chứa các control khác )
Tạo lập qua 2 bước:
B1 - xây dựng control : developer thiết lập các properties, method, event của các controls hiện diện trên UserControl.
B2 - sử dụng UserControl trên Form: developer sử dụng các properties, methods, events đã được xây dựng ở bước 1.
Xây dựng composite control
Tạo project mới dạng Windows Control Library
Bổ sung các constituent controls vào màn hình thiết kế giao diện của UserControl
Xây dựng composite control
Thiết lập các properties của constituent controls ( các properties này sẽ được cung cấp cho người sử dụng UserControl )






Build composite control thành file assembly
Sử dụng composite control
Tạo ứng dụng WinForm host composite control ( Add reference )
Drag drop composite control từ thanh toolbox vào màn hình design
WinForm tương tác với composite control qua các properties đã xây dựng trước đó
Xây dựng composite control (tt)
Xây dựng event cho composite control. Có 2 loại event:
Constituent event ( UserControl xử lý event này )
Custom event ( sử dụng delegate )
Event
Event trong C# dựa trên mô hình publish-subscribe và cài đặt thông qua delegate
Class khai báo và phát ra event: publisher
Class đăng ký với publisher để nhận được các thông báo khi event xảy ra (event notification): subscriber.

Event
Publisher:
Tạo event thông qua delegate.
Khai báo tất cả các event, chịu trách nhiệm thông báo subscriber biết khi nào event xảy ra để subscriber xử lý.
Subscriber:
Tạo ra subscribing method ( event handler ) với signature và kiểu trả về trùng với signature của delegate.
Event
Thông thường trên .NET, event handler không có kết quả trả về và có 2 tham số:
Tham số 1: object mà trên đó event xảy ra (publishing object)
Tham số 2: các tham số cần thiết cho việc xử lý event ( là đối tượng thuộc kiểu EventArgs hoặc subclass của nó )
Định nghĩa event arguments
Là đối tượng thuộc lớp EventArgs hoặc lớp kế thừa từ EventArgs




Delegate
Là lớp đối tượng mà các thể hiện tạo ra từ nó có thể lưu trữ các references đến các phương thức ( lưu trữ địa chỉ của phương thức - function pointer ).
Delegate
Ví dụ: khai báo delegate và các phương thức mà nó có thể tham chiếu:
Delegate
Ví dụ:
Với delegate:
public delegate void ChangedEventHandler(object sender, ColorMixerEventArgs args);

Tạo ra event (Event thuộc kiểu delegate):
public event ChangedEventHanlder Changed;
Lớp ColorMixer publish event Changed.

Delegate
Publisher cung cấp phương thức phát ra event. Khi event xảy ra, publisher gọi OnChanged. OnChanged kiểm tra xem có đối tượng nào trong chương trình đã đăng ký xử lý event Changed, nếu có OnChanged sẽ gọi event handler của object
Delegate
Publisher phát ra event bằng cách gọi phương thức OnChanged
Đăng ký xử lý event (subscriber)
Sử dụng toán tử +=: gán delegate object vừa tạo vào danh sách các delegate object mà event đang quản lý
this.colorMixer1.Changed += new ColorMixer.ChangedEventHanlder(
this.colorMixer1_Changed );

Tạo ra subscribing method ( event handler ) colorMixer1_Changed để xử lý event
private void colorMixer1_Changed(object sender, ColorMixerEventArgs args)
{
panel1.BackColor = Color.FromArgb(colorMixer1.Red, colorMixer1.Green, colorMixer1.Blue);
}

Tự thiết kế và xây dựng control
Control tự xây dựng được kế thừa từ lớp Control
Không có giao diện, developer phải override phương thức Paint để tạo giao diện cho control
Tạo một Windows Control Library project, sửa lại UserControl thành Control
Tự thiết kế và xây dựng control
Timer m_Timer = new Timer();
public DigitalClock()
{
InitializeComponent();

m_Timer.Interval = 1000;
m_Timer.Enabled = true;
m_Timer.Tick += new EventHandler(timer_Tick);
}
void timer_Tick(object sender, EventArgs e)
{
Invalidate();
}
private void DigitalClock_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawString(DateTime.Now.ToString("T"),new Font(Font.FontFamily,20,FontStyle.Bold),Brushes.Orange,new Point(0,0));
}
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Soul Of Wind
Dung lượng: | Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)