2010-03-19 37 views
7

Tôi thường sử dụng TabControl và bằng cách nào đó ẩn các tab và điều hướng qua chúng.Mô hình tốt để xây dựng trình hướng dẫn?

Tôi tò mò về các cách khác để thực hiện việc này !!!

+6

Sauron đã sử dụng thiết bị 'RingControl' cho trình hướng dẫn, nhưng tôi nghĩ nó hơi nhiều. – FrustratedWithFormsDesigner

+0

@FrustratedWithFormsDesigner: Tôi có thể kiểm soát ở đâu? – Luiscencio

Trả lời

5

Bạn có thể sử dụng bộ sưu tập gồm Panel đối tượng, với tất cả trừ bảng điều khiển đầu tiên có thuộc tính Visible được đặt thành false.

Lưu chỉ mục của bảng hiện tại và có nút "Tiếp theo" và "Trước" thay đổi chỉ mục này một cách thích hợp. Khi chỉ mục này được thay đổi, hãy hiển thị các bảng thích hợp/không hiển thị khi cần (chỉ hiển thị bảng hiện tại tại một thời điểm nhất định).

Bạn cũng có thể xử lý sự kiện IsVisibleChanged trên một số/tất cả các bảng của mình, để kích hoạt một số hành vi nhất định xảy ra khi người dùng điều hướng đến một bảng điều khiển cụ thể.

2

Đây là một chủ đề khá có liên quan; Tôi đã xây dựng một điều khiển Wizard khá toàn diện khoảng hai năm trước để sử dụng trong nhà và tôi nhớ rằng phải mất vài tuần để làm việc chính xác.

Các yếu tố cơ bản là:

  • bảng header
  • bảng Content
  • bảng Action
  • Sidebar

Cả hai bảng nội dung và bảng điều khiển hành động tận dụng các ParentControlDesigner để bật điều khiển giảm. Bảng điều khiển nội dung không cho phép bạn thả trực tiếp vào nó, thay vào đó nó cho phép bạn thả trên trang đang hoạt động (bảng điều khiển phụ). Bảng điều khiển hành động cũng có một chế độ "mặc định", nơi nó tạo ra các nút 4 tiêu chuẩn (prev, next, cancel, finish). Tôi chủ yếu triển khai chế độ tùy chỉnh để tôi có thể làm da nó, tức là sử dụng các nút DevEx thay vì các nút Winforms chuẩn.

Tiêu đề về cơ bản là tĩnh, đó là PictureBoxLabel với hình ảnh, văn bản và phông chữ có thể tùy chỉnh. (Theo mặc định, văn bản giống với tiêu đề trang và phông chữ là phông chữ của điều khiển có kiểu đậm được thêm vào).

Sau đó, có một tập hợp các cấu trúc dữ liệu do API:

  • bước (với tên, chức danh, vv, cũng xác định có hay không họ nên được liên kết trong thanh bên)
  • Workflows (tức là nơi bạn sẽ được đưa đến tiếp theo dựa trên sự lựa chọn của bạn)
  • sự kiện Validation (cả hai đồng bộ và không đồng bộ)
  • Actions (được chạy trước/sau khi thay đổi trang, nút bấm, vv)
  • chuyển effec ts (Tôi đã làm những điều này để giải trí, những người dùng thích 'em)

Tôi sẽ tạo một bộ chỉnh sửa tùy chỉnh cho các bước để tạo bảng phụ cho bảng nội dung như đã giải thích ở trên. Mỗi bảng điều khiển chỉ được thêm thẳng vào bộ sưu tập kiểm soát, nhưng chỉ có một bảng được hiển thị tại một thời điểm dựa trên thuộc tính bước hoạt động. Tôi nhớ rằng docking dường như không hoạt động hoàn toàn đúng nên tôi phải ghi đè tất cả các phương thức thay đổi kích thước.Tôi chưa bao giờ tìm cách tạo thẻ thông minh để dễ dàng lật giữa các trang, nhưng trang hoạt động (hoặc chỉ mục trang) có thể được chọn trên lưới thuộc tính.

Sau đó, tôi cũng phải bao gồm một loạt các móc để chèn bất kỳ logic tùy chỉnh nào trên các trang riêng lẻ. Khó thực sự đi sâu vào chi tiết ở đây mà không đăng tất cả mã. Nó khá tốn thời gian để thiết kế và thử nghiệm, nhưng tôi không nhớ sử dụng bất kỳ thủ thuật thiết kế nào, chỉ cần tiếp cận vấn đề một cách có phương pháp, như đã đề cập, từ quan điểm của các yếu tố giao diện người dùng cá nhân (cả thời gian chạy và thời gian chạy). thiết kế thời gian) và cấu trúc dữ liệu và cách chúng tương tác. Hãy nhớ rằng tất cả điều này là nhằm mục đích tạo ra một thành phần Wizard có thể tái sử dụng vì chúng ta cần phát triển khoảng 10 trong số chúng cho một ứng dụng cụ thể (và nó cũng có ích cho các dự án khác). Nếu tôi chỉ cần hack cùng một thuật sĩ nhanh, tôi có lẽ sẽ không trải qua tất cả những rắc rối này, tôi chỉ làm những gì bạn đang làm - sử dụng một điều khiển tab và một vài bảng điều khiển. Hoặc tốt hơn nhưng tôi sẽ sử dụng một điều khiển thuật sĩ off-the-shelf như có sẵn trong nhiều thư viện Winforms bây giờ, giống như thư viện DX.

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