Các ứng dụng .NET Windows Forms có sử dụng các điều khiển Win32 gốc tương đương cho các điều khiển cơ bản như Textbox và Button không? WPF là không có nguồn gốc nhưng Windows Forms trông và cảm thấy rất bản địa. Các hình động trên nút điều khiển trông giống hệt như nút Win32.Các biểu mẫu .NET Windows cơ bản có kiểm soát các điều khiển Win32 gốc không?
Trả lời
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 MenuStrip và ContextMenuStrip đượ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, MainMenu và ContextMenu, 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.
- 1. Tải ứng dụng chạy Kiểm soát Biểu mẫu Windows
- 2. Truy cập thuộc tính Văn bản của điều khiển sau biểu mẫu gốc Vứt bỏ() 'd?
- 3. Windows Forms kiểm soát DataGridView có các loại điều khiển khác nhau trong cùng một cột
- 4. Điều khiển trong suốt Win32 trên tất cả các phiên bản củaWindows
- 5. Kiểm soát các điều khiển khác trong WPF
- 6. Ảnh đồng bằng trong Windows Biểu mẫu Kiểm soát trạng thái
- 7. Kiểm soát người dùng có nguồn gốc từ lớp cơ sở điều khiển người dùng tùy chỉnh
- 8. Làm mờ bảng điều khiển- Biểu mẫu Windows
- 9. Kiểm soát xem trước: cách tham chiếu các điều khiển phía máy chủ bên trong loggedintemplate
- 10. Sửa đổi Kiểm soát Biểu mẫu Windows từ một Dự án khác
- 11. Kiểm soát .NET giống như Kiểm soát Văn bản Địa chỉ E-mail của Outlook
- 12. Thêm điều khiển người dùng bằng cách sử dụng trình thiết kế Biểu mẫu Windows
- 13. Tạo ảnh bằng Thư viện điều khiển biểu đồ Microsoft .NET mà không cần điều khiển
- 14. Làm cách nào để tạo các hộp kiểm tri-state với điều khiển TreeView trong .NET?
- 15. Điều khiển trình duyệt web WPF và biểu mẫu winforms
- 16. Làm cách nào để tạo điều khiển Windows Biểu mẫu chỉ đọc?
- 17. Điều khiển biểu mẫu động
- 18. .NET: Cách chuyển đổi biểu mẫu cửa sổ thành điều khiển cửa sổ
- 19. Kiểm soát thu phóng đối với Biểu mẫu WPF
- 20. Biểu mẫu Windows .NET 2.0: Cách vẽ biểu tượng PNG?
- 21. Mẫu biểu mẫu Windows chung
- 22. Thứ tự các điều khiển trong thuộc tính Điều khiển của biểu mẫu trong C#
- 23. GroupBox chứa các điều khiển, cách lấy tên của các điều khiển đó?
- 24. Tôi có thể lưu trữ một Biểu mẫu Windows bên trong một điều khiển
- 25. Điều khiển trình duyệt web tốt nhất để sử dụng trên Ứng dụng Biểu mẫu Windows là gì?
- 26. Làm cách nào để kiểm soát biểu mẫu WS_EX_LAYERED?
- 27. C# .NET Kiểm soát người dùng bên trong ứng dụng gốc. Các vấn đề về chuỗi tài nguyên
- 28. Đường cơ sở trong các điều khiển Winforms tùy chỉnh
- 29. Mẫu liên kết trong mẫu kiểm soát
- 30. Có hệ thống kiểm soát phiên bản Windows barebones phù hợp với chỉ một người không?
+1 thú vị. Bạn có một tài liệu tham khảo cho điều này? –
@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. –