1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu về user control và delegate, event trong NET

33 1,8K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 799 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tìm hiểu về user control và delegate, event trong NET

Trang 1

Tìm hiểu v ề Us er Control và Delegate, Event trong NET

ĐẶNG BÌNH PHƯƠNG

GVHD:

Trang 2

Nội dung trình bày

• Giới thiệu về User Control

• Tạo User Control trong C#

• Thêm các Property cho Control

• Thêm các hàm (thường & xử lý sự kiện)

• Tìm hiểu và sử dụng Delegate và Event

• Kết luận

Trang 3

Nội dung trình bày

• Giới thiệu về User Control

• Tạo User Control trong C#

• Thêm các Property cho Control

• Thêm các hàm (thường & xử lý sự kiện)

• Tìm hiểu và sử dụng Delegate và Event

• Kết luận

Trang 4

• Ví dụ 1

– Viết chương trình cho phép người sử dụng:

• Nhập địa chỉ của nhà bao gồm:

– Số nhà – Đường – Phường – Quận – Thành Phố

• Mỗi khi người sử dụng nhập NCV vào đường thì tự động đường chuyển sang chuỗi Nguyễn Cửu Vân.

Giới thiệu về User Control

Trang 5

Giới thiệu về User Control

Trang 6

• Ví dụ 2

– Viết chương trình cho phép người sử dụng:

• Nhập 3 địa chỉ của nhà bao gồm:

– Số nhà – Đường – Phường – Quận – Thành Phố

• Mỗi khi người sử dụng nhập chuỗi NCV vào đường của địa chỉ nào thì tự động đường của địa chỉ đó chuyển sang chuỗi Nguyễn Cửu Vân.

Giới thiệu về User Control

Trang 7

– Ý tưởng?

• Tạo một form có các label và 15 textbox cho phép nhập: số nhà, đường, phường, quận, thành phố cho 3 địa chỉ.

• Viết 3 hàm giống nhau để xử lý cho 3 sự kiện TextChanged của textbox đường để mỗi khi người

sử dụng nhập chuỗi NCV thì tự động chuỗi

Nguyễn Cửu Vân sẽ được thay thế.

• “Hình như” công việc có vẻ nhàm chán và mất thời gian!!!

Giới thiệu về User Control

Trang 8

– Ý tưởng mới 

• Nhóm các label và 5 textbox thể hiện số nhà, đường, phường, quận, thành phố vào một lớp (class) thành một control duy nhất có thể tái sử dụng.

• Viết code cho hàm xử lý sự kiện cho textbox đường xử lý việc chuyển NCVNguyễn Cửu Vân

• Mỗi khi có yêu cầu nhập số nhà, ta chỉ việc kéo nó vào form.

• Khái niệm User Control ra đờiGiới thiệu về User Control

Trang 9

Nội dung trình bày

• Giới thiệu về User Control

• Tạo User Control trong C#

• Thêm các Property cho Control

• Thêm các hàm (thường & xử lý sự kiện)

• Tìm hiểu và sử dụng Delegate và Event

• Kết luận

Trang 10

Tạo User Control

– Mở Microsoft Visual Studio NET 2003

– Tạo một ứng dụng Windows Application

(thuộc danh sách Visual C# Projects) với tên tùy ý (ví dụ: VD1)

– Thêm User Control vào project bằng cách

chọn Project > User Control Đặt tên User Control đó (ví dụ: Diachi.cs)

Tạo User Control trong C#

Trang 11

– 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.

Ở cuối của toolbox trong tab Windows Form sẽ có

1 control mới được thêm vào có tên là Diachi Kéo

Control đó vào form và chạy ứng dụng (Hoặc kéo

file Diachi.cs có trong cây Solution Explorer vào

form)

Tạo User Control trong C#

Trang 12

- Chạy thử ứng dụng.

Tạo User Control trong C#

Trang 13

- Để ý, trong cửa số Properties của control

Diachi vừa mới thêm vào form, trừ các chỗ

cho ta đặt lại các property cho control như những control thông thường (Name, Location, Size…), không có chỗ nào cho ta đặt giá trị cho số nhà, đường, phường, quận

và thành phố

- Làm sao để thêm các property cho control

Diachi cho phép ta chỉnh số nhà, đường,

quận, thành phố???

Tạo User Control trong C#

Trang 14

Nội dung trình bày

• Giới thiệu về User Control

• Tạo User Control trong C#

• Thêm các Property cho Control

• Thêm các hàm (thường & xử lý sự kiện)

• Tìm hiểu và sử dụng Delegate và Event

• Kết luận

Trang 15

Thêm các Property

– Trong lớp Diachi (mở file Diachi.cs), thêm

vào các dòng code sau:

– Thêm tương tự cho property đường,

phường, quận, thành phố

Thêm các Property cho UC

[Category ("Data"), Description("So nha cua dia chi")]

public string Sonha {

get {return this.txtSonha.Text;}

set {this.txtSonha.Text = value;}

}

Trang 16

- Trong cửa sổ Properties của control, đặt

các giá trị tương tự như sau thì lập tức bên form cũng được cập nhật

Thêm các Property cho UC

Trang 17

Nội dung trình bày

• Giới thiệu về User Control

• Tạo User Control trong C#

• Thêm các Property cho Control

• Thêm các hàm (thường & xử lý sự kiện)

• Tìm hiểu và sử dụng Delegate và Event

• Kết luận

Trang 18

Thêm các hàm (phương thức)

Muốn thêm hàm có tên Lay_Diachi để lấy địa chỉ

đầy đủ, ta thêm các dòng sau vào lớp Diachi:

Thêm các phương thức cho UC

public string Lay_Diachi() {

string strDiachi = Sonha;

strDiachi += " duong " + Duong;

strDiachi += " phuong " + Phuong;

strDiachi += " quan " + Quan;

strDiachi += " thanh pho " + Thanhpho;

return strDiachi;

}

Trang 19

Thêm các hàm xử lý sự kiện

– Thêm hàm xử lý sự kiện cho textbox

txtDuong để mỗi khi người sử dụng nhập

chuỗi “NCV ” vào tên đường thì lập tức tên

đường chuyển thành “Nguyễn Cửu Vân”:

Chọn cửa sổ thiết kế (Design) của control

Diachi

Chọn textbox txtDuong

Thêm các phương thức cho UC

Trang 20

Trong cửa sổ Properties (của textbox này), mục

Events, ta nhấp đúp vào chỗ sự kiện TextChanged để bổ sung hàm xử lý cho sự kiện

này (hoặc gõ một tên hàm theo ý của mình)

Thêm các phương thức cho UC

Trang 21

• Viết code cho sụ kiện như sau:

• Chạy thử chương trình

Thêm các phương thức cho UC

private void txtDuong_TextChanged(object sender, System.EventArgs e) {

Trang 22

Thêm các phương thức cho UC

• Vấn đề nảy sinh:

– Giả sử ta bổ sung thêm 1 hay nhiều User

Control Diachi nữa Vấn đề đặt ra là làm sao

để khi ta gõ nội dung vào User Control Diachi đầu tiên thì tất cả các User Control Diachi

còn lại cũng đồng loạt thay đổi theo???

– Trong lúc lập trình (viết code cho UC) ta chưa biết phương thức nào của đối tượng nào sẽ được gọi???

– Khái niệm Delegate và Event.

Trang 23

Nội dung trình bày

• Giới thiệu về User Control

• Tạo User Control trong C#

• Thêm các Property cho Control

• Thêm các hàm (thường & xử lý sự kiện)

• Tìm hiểu và sử dụng Delegate và Event

• Kết luận

Trang 24

Khái niệm Delegate:

– Có nghĩa là ủy thác, ủy quyền

– Trong lập trình, đôi lúc ta gặp tình huống

phải thực thi một hành động nào đó, nhưng lại không biết sẽ gọi phương thức nào của đối tượng nào

– Chương trình sẽ làm việc với đối tượng ủy

thác, ủy quyền

Delegate và Event

Trang 25

Khái niệm Event:

– Có nghĩa là sự kiện

– Ví dụ như sự kiện TextChanged,

OnMouseMove, OnMouseUp, OnMouseDown…

Ví dụ:

– Thêm vào form thêm 2 User Control (UC)

Cập nhật chương trình để khi ta gõ nội dung

vào UC Diachi đầu tiên thì tất cả các UC

Diachi còn lại cũng đồng loạt thay đổi theo.

Delegate và Event

Trang 26

Bước thực hiện:

– Thêm vào form 2 User Control Diachi vào

form

– Trong lớp Form1, ta bổ sung thêm 2 hàm có

cùng dạng (kiểu trả về là void, 1 tham số đầu vào kiểu string) để cập nhật textbox txtDuong của 2 User Control Diachi 

Delegate và Event

Trang 27

- Hai hàm y hệt nhau có nhiệm vụ cập nhật lại

giá trị cho textbox txtDuong của 2 User Control diachi2 và diachi3:

Trang 28

– Tại thời điểm viết code cho UC Diachi, ta

chưa xác định được hàm nào và có bao

nhiêu hàm (có kiểu trả về là void, 1 tham số đầu vào kiểu string) sẽ được gọi (để cập

nhật các textbox txtDuong của UC Diachi khác) mỗi khi textbox txtDuong của UC này

thay đổi Thêm vào lớp Diachi khai báo:

Delegate và Event

public delegate void Diachi_DuongChangedHandler(string strDuong); public event Diachi_DuongChangedHandler Diachi_DuongChanged;

Trang 29

– Ý nghĩa:

Dùng từ khóa delegate để khai báo một hàm ủy

thác (ủy quyền) cùng kiểu trả về (void) và tham

số đầu vào (string) với hàm sẽ gọi (để cập nhật giá trị của textbox txtDuong của các UC khác).

• Lúc này, UC sẽ chỉ làm việc với hàm ủy thác này.

Dùng từ khóa event để khai báo một sự kiện để

mỗi khi người sử dụng cập nhật textbox

txtDuong của UC này, ta sẽ “phát” sự kiện này

đi và lúc đó, các hàm giống với hàm ủy thác có gắn với sự kiện này sẽ được thực hiện.

Delegate và Event

Trang 30

– Trong hàm xử lý cho sự kiện TextChanged

của textbox txtDuong ở trên, ta bổ sung các dòng lệnh sau để “phát” sự kiện đó đi nếu

Trang 31

– Trong hàm tạo của Form1, ta thêm các khai

báo sau để gán hàm có cùng kiểu với hàm

ủy thác vào sự kiện:

Trang 32

Nội dung trình bày

• Giới thiệu về User Control

• Tạo User Control trong C#

• Thêm các Property cho Control

• Thêm các hàm (thường & xử lý sự kiện)

• Tìm hiểu và sử dụng Delegate và Event

• Kết luận

Trang 33

Demo và Trả lời thắc mắc

?

Ngày đăng: 18/10/2014, 22:26

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w