2013-04-24 26 views

Trả lời

7

Có, chúng & hellip; với một vài ngoại lệ.

Một số thứ trong WinForms được vẽ tùy chỉnh. Họ sử dụng điều khiển gốc, nhưng họ bật chủ sở hữu vẽ và xử lý một số logic vẽ bên trong trong mã C#. Ưu điểm của điều này là nó cho phép những thứ như nút có thuộc tính BackColor hỗ trợ màu do người dùng xác định thay vì màu hệ thống chuẩn. Nói chung, điều này nên tránh (ít nhất theo ý kiến ​​của tôi) bởi vì không chỉ là hiệu ứng xấu xí, có lẽ có một lý do người dùng chọn màu sắc mà họ đã làm. Nhưng các nhà thiết kế đồ họa thường nghĩ rằng họ biết rõ hơn người dùng, vì vậy tùy chọn tồn tại.

Điều khiển được triển khai như thế này thường hiển thị thuộc tính FlatStyle cho phép bạn thay đổi cách vẽ (ví dụ: ButtonBase.FlatStyle). Với FlatStyle.Standard, Khuôn khổ .NET thực hiện việc vẽ chủ sở hữu bình thường, ngay cả khi bạn chưa tùy chỉnh bất kỳ thuộc tính nào của điều khiển với các cài đặt bất thường. Với FlatStyle.System, điều khiển được hiển thị trực tiếp bởi Win32 mà không có bất kỳ chủ sở hữu nào vẽ hoặc các ghi đè khác.

Bạn có thể biết sự khác biệt về các nút khá dễ dàng. Khi được đặt thành FlatStyle.System, hiệu ứng di chuột màu xanh lam trên các nút dần dần biến mất trong và ngoài. Khi được đặt thành FlatStyle.Standard, ánh sáng màu xanh đột nhiên xuất hiện và biến mất. Đóng, nhưng không hoàn toàn giống nhau. Hộp tổ hợp cũng thực hiện tương tự (ít nhất là khi thuộc tính DropDownStyle được đặt thành ComboBoxStyle.DropDownList).

Tôi khuyên bạn nên đặt tất cả các điều khiển có thuộc tính như vậy thành FlatStyle.System trừ khi bạn hoàn toàn yêu cầu hành vi không được hỗ trợ bởi FlatStyle này.

Có một vài trường hợp ngoại lệ khác. Một số điều khiển WinForms không tồn tại trong Win32, vì vậy chúng không được hỗ trợ bởi các điều khiển gốc. Các DataGridView là một ví dụ tốt về kiểm soát như vậy.

Cuối cùng, các điều khiển MenuStripContextMenuStrip được viết hoàn toàn bằng mã C# và được vẽ theo cách thủ công bởi WinForms. Chúng không được hỗ trợ theo bất kỳ cách nào bằng các điều khiển Win32 gốc. Đây là lý do tại sao họ trông rất khủng khiếp xấu xí trên Windows Vista và sau này, bởi vì họ đang mãi mãi bị mắc kẹt bằng cách sử dụng phong cách Office XP. Nó trông tuyệt vời trên Windows XP, nhưng nó giống như một ngón tay cái đau trên các phiên bản sau này. Thay đổi kiểu hiển thị từ Professional thành System cũng không giúp được gì nhiều.

Thay vào đó, bạn cần phải thêm các phiên bản gốc của các điều khiển này, MainMenuContextMenu, vào hộp công cụ của bạn. Chúng không được bao gồm theo mặc định trên các phiên bản gần đây của Visual Studio, nhưng chúng hoàn toàn vẫn có sẵn để sử dụng và không đi đâu cả. Một lần nữa, tôi khuyên bạn nên sử dụng những thay vào đó, vì chúng được hỗ trợ 100% bởi các trình đơn Win32 nguyên bản và do đó trông giống như chúng không phụ thuộc vào phiên bản Windows của người dùng của bạn.

+0

+1 thú vị. Bạn có một tài liệu tham khảo cho điều này? –

+0

@Jay Không thực sự, không. Tài liệu cung cấp một số gợi ý, cũng như xem xét nguồn tham chiếu. Nhưng tham khảo tốt nhất là kinh nghiệm của tôi. –

Các vấn đề liên quan