User Control

nguyenac

Administrator
Staff member
18/11/08
22.554
1
38
VB 2005 cung cấp cho bạn một bộ điều khiển khá đồ sộ khi thiết kế giao diện. Tuy nhiên, không phải lúc nào các điều khiển này cũng có thể đáp ứng hòan toàn nhu cầu của ứng dụng bạn đang thực hiện.

Khi muốn kết hợp chức năng của một hoặc nhiều điều khiển với nhau hoặc khi cần có những cách hiển thị đặc biệt hay những xử lý khác hơn, bạn có thể tạo một user control.

Trên điều khiển tạo ra này, bạn có thể mở rộng các chức năng hiện có của các điều khiển cũng như tạo thêm các thuộc tính, chức năng, sự kiện mới.

Các cách tạo user control :
- Nếu một điều khiển hiện có đã có những đặc điểm, chức năng đáp ứng đa phần yêu cầu, bạn có thể kế thừa từ điều khiển đó để tạo user control và bổ sung thêm các thành phần còn thiếu.

Nếu các đặc điểm, chức năng nằm rải rác trên các điều khiển khác nhau, bạn có thể tạo user control bao gồm các điều khiển đó. Ví dụ cần có một điều khiển cho phép người dùng chọn màu sắc bằng giá trị các màu đỏ, xanh lục và xanh dương và tùy theo giá trị mà hiển thị màu phối hợp tương ứng, bạn có thể tạo từ ba scrollbar, label để hiển thị màu mẫu và cài đặt thêm một số thành phần.
- Nếu không thể phối hợp các điều khiển, bạn có thể tạo mới hoàn toàn và lúc này sẽ hoàn toàn chủ động trên mọi thành phần tạo ra.

Tạo một user control
Chọn Project/Add User Control …, đặt tên trên ô Name và nhấn OK nếu muốn tạo user control chỉ sử dụng trong project.

Hoặc nếu muốn tạo một User control để sử dụng cho nhiều ứng dụng, chọn File/New Project/Windows Control Library :

Một điều khiển user control được tạo ra.
• Kéo thả các điều khiển trên Toolbox vào điều khiển user control vừa tạo.
• Định vị và thiết kế các điều khiển, những điều khiển nào muốn người dùng được phép truy cập, bạn khai báo Public.
• Cài đặt các thủ tục và thuộc tính tùy biến của điều khiển.
Việc thiết kế User control tương tự thiết kế form. User control có hai trạng thái thực thi (runtime). Khi vẽ một User control trên màn hình, điều khiển đã ở trong trạng thái thực thi. Vì vậy, gán trị cho thuộc tính của User control, bạn thấy có sự thay đổi tức thời trên điều khiển. Điều đó chứng minh các khối lệnh của User control đang được thực thi. Tuy nhiên, User control cần phải phân biệt các trạng thái này để có hành động xử lý thích hợp.

Để phân biệt trạng thái, bạn sử dụng thuộc tính DesignMode : khi User control được vẽ trên form, thuộc tính này là True, ngược lại, khi ứng dụng đang thực thi, thuộc tính này có trị False.

Bạn có thể tạo thêm các thuộc tính, hành động mới cho User control cũng như giấu đi các điều khiển trong User control không muốn cho người dùng truy cập đến.

Minh họa 1
Để dễ hình dung hơn, bạn tạo một User control như sau :

• Yêu cầu :
- Có các đặc điểm của một TextBox.
- Khi nhận focus, màu nền có màu khi nhận focus.
- Khi con trỏ rời điều khiển, màu nền trở lại màu khi mất focus.
- Điều khiển chỉ cho nhập số, nếu nhập không đúng kiểu dữ liệu, màu chữ sẽ đổi sang màu bị lỗi.
- Tất cả các màu trên người dùng được phép đọc ghi.

• Các bước thực hiện :
- Tạo một project mới và chọn kiểu ứng dụng là Windows Control Library.
- Đặt tên cho Usercontrol vừa tạo ra theo project Doi_mau_TextBBox.
- Trên Solution Explorer, nhấn nút ShowAll Files để hiển thị các tập tin và chọn xóa tập tin Doi_mau_TextBox.Designer.vb và thay đổi nội dung tập tin Doi_mau_TextBox.vb như sau :

Bạn muốn tạo User control sẽ có tất cả các thành phầnc ủa TextBox nên kế thừa từ TextBox.
- Phát sinh thêm thuộc tính mới : MauEnter, MauLeave, MauError như sau :

Trước tiên, bạn phải khai báo biến Private để lưu giữ giá trị màu và phải có sẵn giá trị ban đầu là màu tương ứng trên TextBox hoặc tùy ý, kế tiếp để người dùng có thể đọc và ghi vào thuộc tính này cần khai báo thuộc tính với Public ở chế độ đọc ghi (như trên), thực hiện tương tự cho cả ba thuộc tính.
- Xử lý đổi màu nền điều khiển khi con trỏ chuyển đến qua biến cố Enter của TextBox :

- Xử lý trả lại màu nền điều khiển khi con trỏ rời khỏi qua biến cố Leave của TextBox :

- Xử lý đổi màu chữ điều khiển khi nhập liệu sai kiểu số qua biến cố TextChanged của TextBox :

- Sau khi cài đặt xong, bạn có thể tạo tập tin DLL bằng cách Build Project đó. Tập tin DLL tạo ra trong thư mục Bin\Debug của Project.

Minh họa 2

• Yêu cầu :
- Điều khiển cho phép chọn màu bằng thanh kéo.
- Khi thay đổi giá trị, màu mẫu sẽ thay đổi theo và giá trị màu cũng thay đổi.

• Các bước thực hiện :
- Tạo một project mới và chọn kiểu ứng dụng là Windows Control Library.
- Đặt tên cho Usercontrol vừa tạo ra theo project chon_mau.
- Trên cửa sổ thiết kế, đưa vào ba điều khiển Scrollbar, hai Button và bốn Label.

- Định cho các điều khiển Truot_R, Truot_G, Truot_B như sau :

Giá trị màu cơ bản trong màu mẫu chỉ biến thiên từ 0 đến 255 :
- Phát sinh thêm thuộc tính mới : Mau_chon như sau :

Thuộc tính này trả về màu nền của điều khiển Mau_mau. Khi được gán trị, màu sẽ được gán cho màu nền của điều khiển Mau_mau đồng thời gán các trị màu cơ bản cho các thanh trượt và các label R, G, B tương ứng.
- Xử lý khi thay đổi giá trị màu cơ bản chung cho cả ba thanh trượt :
- Sau khi cài đặt xong, bạn có thể tạo tập tin DLL bằng cách Build Project đó. Tập tin DLL tạo ra trong thư mục Bin\Debug của Project.

Sử dụng User Control
Sau khi đã có tập tin DLL, trong project muốn sử dụng mở màn hình muốn đưa User control vào :
- Nhấn chuột phải trên Toolbox, chọn Choose Items.
- Trên cửa sổ Choose Toolbox Items, nhấn nút Browse.
- Tìm đến tập tin DLL chứa user control muốn đưa vào và nhấn chọn, chọn OK, điều khiển sẽ xuất hiện trên Toolbox, đồng thời trong References của project có thêm tham chiếu của tập tin DLL vửa chọn :

Tham chiếu Assembly
Nếu chỉ tạo User control và không có project riêng, có thể điều khiển đã hiện trên Toolbox, nếu không bạn kéo thả vào màn hình một điều khiển và trên cửa sổ code tìm thay các cụm từ tham chiếu đến điều khiển vừa kéo vào bằng tên của User control.

Chạy thử và kiểm tra có phù hợp kết quả đã định.
 

Facebook Comment

Find Diễn đàn Công nghệ thông tin và truyền thông on mobile

Thành viên trực tuyến

Không có thành viên nào trực tuyến.

Thống kê diễn đàn

Chủ đề
31.050
Bài viết
33.103
Thành viên
5.957
Thành viên mới nhất
susu93439

Mobile app users
0
Latest mobile user

Tài nguyên mới