Tôi đang sử dụng Visual Studio để tạo một ứng dụng GUI trong C #. Hộp công cụ đóng vai trò là bảng thành phần tiện lợi cho phép tôi dễ dàng kéo và thả các nút và các yếu tố khác (để rõ ràng tôi sẽ nói nút bất cứ khi nào tôi có nghĩa là "điều khiển") trên biểu mẫu của mình, điều này làm cho các dạng tĩnh khá dễ thực hiện. Tuy nhiên, tôi gặp phải hai vấn đề:
- Tạo các nút ở nơi đầu tiên là rất nhiều công việc. Khi tôi có một biểu mẫu không tĩnh (ví dụ: các nút hoặc các điều khiển khác được tạo trong thời gian chạy theo những gì người dùng làm) Tôi hoàn toàn không thể sử dụng bảng màu. Thay vào đó, tôi phải tạo từng nút theo cách thủ công, bằng cách gọi hàm tạo trong bất kỳ phương thức nào tôi đang sử dụng, sau đó khởi tạo thủ công bằng cách chỉ định chiều cao, chiều rộng, vị trí, nhãn, trình xử lý sự kiện, v.v. Điều này là vô cùng tẻ nhạt vì tôi phải đoán tất cả các thông số mỹ phẩm này mà không thể xem biểu mẫu sẽ trông như thế nào và nó cũng tạo ra nhiều dòng mã lặp đi lặp lại cho mỗi nút.
- Làm các nút làm một cái gì đó cũng là rất nhiều công việc. Đối phó với các sự kiện trong một ứng dụng đầy đủ tính năng là một nỗi đau rất lớn. Cách duy nhất tôi biết cách thực hiện là chọn một nút, chuyển đến tab sự kiện trong thuộc tính của nó, nhấp vào
OnClick
sự kiện để nó tạo sự kiện trongForm
mã của mã, sau đó điền vào phần thân của sự kiện. Vì tôi muốn tách biệt logic và trình bày, tất cả các trình xử lý sự kiện của tôi kết thúc bằng các cuộc gọi một đường đến chức năng logic nghiệp vụ thích hợp. Nhưng việc sử dụng điều này cho nhiều nút (ví dụ, hãy tưởng tượng số lượng nút có trong một ứng dụng như MS Word) làm ô nhiễm mã của tôiForm
với hàng tá phương thức xử lý sự kiện nồi hơi và rất khó để duy trì điều này.
Do đó, bất kỳ chương trình GUI nào phức tạp hơn Hello World đều rất không thực tế đối với tôi. Để rõ ràng, tôi không gặp vấn đề gì khi xử lý sự phức tạp trong các chương trình mà tôi viết có giao diện người dùng tối thiểu - tôi cảm thấy mình có thể sử dụng OOP với mức độ hợp lý để cấu trúc gọn gàng mã logic kinh doanh của mình. Nhưng khi phát triển GUI, tôi bị kẹt. Có vẻ tẻ nhạt đến nỗi tôi cảm thấy như mình đang phát minh lại cái bánh xe, và có một cuốn sách ở đâu đó ngoài kia giải thích cách làm GUI đúng cách mà tôi chưa đọc.
Tui bỏ lỡ điều gì vậy? Hay tất cả các nhà phát triển C # chỉ chấp nhận danh sách vô tận các trình xử lý sự kiện lặp lại và mã tạo nút?
Như một gợi ý (hy vọng hữu ích), tôi hy vọng rằng một câu trả lời hay sẽ nói về:
- Sử dụng các kỹ thuật OOP (chẳng hạn như mẫu nhà máy) để đơn giản hóa việc tạo nút lặp lại
- Kết hợp nhiều trình xử lý sự kiện thành một phương thức duy nhất để kiểm tra
Sender
xem nút nào được gọi là nút đó và hành xử theo đó - XAML và sử dụng WPF thay vì Windows Forms
Bạn không cần phải đề cập đến bất kỳ trong số này, tất nhiên. Đó chỉ là phỏng đoán tốt nhất của tôi về loại câu trả lời mà tôi đang tìm kiếm.