Sự khác biệt giữa User Control, Custom Control và Component là gì?


81

Đây là ba thứ khác nhau mà bạn có thể thêm vào một dự án và tôi không chắc liệu mình có hiểu sự khác biệt hay không. Ví dụ như tất cả chúng đều hiển thị trong hộp công cụ thành phần khi làm việc với a Form. Một số tình huống sử dụng phổ biến cho mỗi tình huống trong số chúng là gì? Sự khác biệt là gì?

Câu trả lời:


162

Sự khác biệt chính giữa User Control, Custom Control và Component là chúng kế thừa từ các cấp khác nhau trong cây kế thừa:

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

MyUserControl
   |-> ContainerControl
          |-> ScrollableControl
                 |-> Control
                        |-> Component

Vì vậy, trong ngắn hạn, bạn nhận được một lượng chức năng có dây sẵn khác với các tùy chọn khác nhau.

Khi nào bạn sẽ sử dụng các tùy chọn khác nhau? (đây là những suy nghĩ và ý kiến, không phải sự thật)

  • Tạo một thành phần nếu bạn muốn cung cấp chức năng mà không có giao diện người dùng (chẳng hạn như thành phần Bộ hẹn giờ, nguồn dữ liệu, ...)
  • Tạo điều khiển tùy chỉnh nếu bạn muốn tạo một thành phần mà bạn có toàn quyền kiểm soát hình thức trực quan của nó và bạn không muốn có bất kỳ chức năng không cần thiết nào. Các trường hợp điển hình sẽ là các điều khiển đơn giản với chức năng hạn chế (chẳng hạn như một nút)
  • Tạo điều khiển người dùng nếu bạn định kết hợp các điều khiển hiện có thành các khối xây dựng có thể tái sử dụng (chẳng hạn như hai danh sách có các nút nơi bạn có thể di chuyển các mục giữa các danh sách).

16
Vâng, tôi đã mất một lúc để tìm hiểu, nhưng có vẻ như một UserControlđiều khiển thực sự là một điều khiển "tổng hợp" (điều khiển được tạo ra từ các điều khiển khác), trong khi điều khiển tùy chỉnh thực sự là điều khiển do người dùng thiết kế.
Dave Cousineau

Nếu muốn tạo một điều khiển bao gồm một số TextBox với đồ họa được vẽ động và tùy chỉnh giữa chúng, tôi có nên chọn UserControlkhông?
Nick Alexeev

@NickAlexeev Tôi đã không làm việc nhiều trong thế giới winforms kể từ vài năm trở lại đây, nhưng tôi tin rằng đó sẽ là cách để đi, vâng.
Fredrik Mörk

2
@ FredrikMörk Câu trả lời rất hay! bạn có thể đề xuất một trang web nơi chúng tôi có thể tìm hiểu cách tạo các điều khiển tùy chỉnh không?
John Odom

1
@John Odom AngelSix sê-ri trên youtube là cái nên đi cùng. Tôi đã kiểm tra và tôi biết nó có trong video 9 và cụ thể là anh ấy đã sử dụng nó lúc 26:00
Mour_Ka

2

Thêm vào những gì Fredrik đã nói, nói chung các thành phần và điều khiển tùy chỉnh sẽ được sử dụng khi bạn định sử dụng lại chúng trong các dự án. Sử dụng các điều khiển của người dùng khi bạn chỉ sử dụng nó trong một dự án.


10
Tại sao vậy? Lợi ích khi sử dụng điều khiển người dùng trong một dự án đơn lẻ, hạn chế của nó khi được sử dụng trong một số dự án ...?
Camilo Martin

1

Tôi tin rằng tuyên bố cuối cùng là không đúng theo quan điểm của tôi. Tôi tạo kiểm soát người dùng vì nhiều lý do khác nhau.

Lý do chính là vì nếu nói tôi thiết kế một giao diện gồm nhiều điều khiển được nhóm lại với nhau.

Đầu tiên tôi tạo một thư viện lớp, sau đó tôi thêm các điều khiển của người dùng vào nó. Bây giờ nếu tôi cần thay đổi bất kỳ phần nào của logic đằng sau cách điều khiển người dùng hoạt động, tôi có thể rất dễ dàng. Ngoài ra thư viện lớp này có thể được sử dụng nhiều lần.

Cũng trong cùng một thư viện lớp, tôi có thể có nhiều lớp có thể được chia sẻ và sử dụng cho bất kỳ điều khiển người dùng nào của tôi.

Đây là lý do chính tôi sử dụng điều khiển của người dùng. Và nếu bạn thực hiện thay đổi đối với quyền kiểm soát người dùng hoặc thư viện lớp của mình. một khi bạn xây dựng công việc. dll sẽ tự động cập nhật ngày trong thư mục bin.

Vì vậy, nếu tôi đang tham chiếu điều này trong một dự án khác Những thay đổi đó cũng sẽ xuất hiện trong dự án mới.

Ngoài ra, nó không sử dụng các quy trình sơn giống như biểu mẫu và bất kỳ thứ gì bạn đã tải trên biểu mẫu.

Vì vậy, điều khiển của người dùng cho chúng ta khả năng rất mô-đun Và tôi Có thể có nhiều điều khiển người dùng chia sẻ các lớp cơ bản của thư viện lớp ... Vì vậy, mục đích điều khiển của người dùng không chỉ dành cho một dự án. Nó không có giới hạn về mặt đó. jeff


Re "Tôi tin rằng câu nói cuối cùng là không đúng theo quan điểm của tôi" - câu nói cuối cùng của điều gì ? [Và nó sẽ là tốt nhất để trích dẫn báo cáo kết quả trong câu trả lời của bạn, để người đọc biết ngay những gì bạn đang đề cập đến.]
ToolmakerSteve

-5

Sự khác biệt chính giữa chúng- Kiểm soát người dùng là tệp trang có phần mở rộng .ascx chỉ có thể được sử dụng trong một ứng dụng hoặc dự án. Nhưng điều khiển tùy chỉnh là các tập hợp (tệp dll) có thể được sử dụng trong nhiều ứng dụng.


7
Câu hỏi là về WinForms, không phải ASP.NET.
Qwertie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.