2011-02-10 40 views
6

Tôi cần mô phỏng một biểu mẫu tương tự như giao diện được thấy trong khi cài đặt bất kỳ phần mềm nào. Có các nút tiếp theo và sau và tất cả thông tin do người dùng nhập chỉ được xử lý khi họ nhấp vào nút kết thúc.
Khi người dùng nhấp vào nút quay lại, thông tin đã nhập trước đó được hiển thị cho họ.
Khi người dùng nhấp vào nút tiếp theo, màn hình tiếp theo sẽ hiển thị cho họ. Tất cả thông tin hiển thị được hiển thị trong một biểu mẫu.C# cần lời khuyên về một vấn đề đơn giản về điều hướng biểu mẫu

Có 3 phần tôi cần hiển thị cho người dùng.

  • Phần 1 - nhấn vào nút bên cạnh sẽ hiển thị phần 2
  • Phần 2 - nhấn nút quay lại sẽ hiển thị phần 1 và nhấn vào nút bên cạnh sẽ hiển thị phần 3
  • Phần 3 - nhấn nút trước sẽ hiển thị phần 2 và nhấn nút kết thúc sẽ xử lý tất cả các thông tin được nhập trong phần 1,2 và 3.

hiện nay có kế hoạch thực hiện các giải pháp được liệt kê dưới đây:

  1. Tạo một hình thức
  2. Thêm tất cả các yếu tố cho phần 1 và tạo ra một sự kiện nút bên cạnh đó sẽ ẩn tất cả các yếu tố thể hiện trong phần 1 bao gồm các nút và hiển thị tất cả các yếu tố phần 2.
  3. Tạo sự kiện nút cho nút quay lại cho phần 2 sao cho nó ẩn tất cả các phần tử trong phần 2 bao gồm nút và hiển thị tất cả các phần tử trong phần 1 và nút tiếp theo để ẩn tất cả phần tử trong phần 2 bao gồm nút và hiển thị tất cả phần tử trong phần 3
  4. Tạo sự kiện nút tương tự cho phần 3

Có giải pháp nào tốt hơn so với mô tả ở trên không. Nếu có, vui lòng mô tả cách tiếp cận. Bất kỳ trợ giúp nào được cung cấp sẽ được đánh giá cao.

+1

Những gì bạn đang tìm kiếm được gọi là "Wizard". Bạn có thể tìm thấy một số hướng dẫn tốt tìm kiếm với từ khóa đó. – Justin

+0

Nếu đây là một ứng dụng web (không thể kể từ câu hỏi của bạn) có một điều khiển thuật sĩ trong thư viện điều khiển web tiêu chuẩn sẽ thực hiện chính xác những gì bạn muốn. –

+0

Tôi đang làm một ứng dụng dành cho máy tính để bàn. Cảm ơn justin, wizard là chính xác những gì tôi muốn. Cảm ơn bạn đã giúp đỡ. – abduls85

Trả lời

2

Một cách để đạt được điều này là sử dụng một điều khiển tab và ẩn các tab để người dùng không thể điều hướng giữa chúng và thay vào đó bạn kiểm soát di chuyển từ một tab tiếp theo theo chương trình.

Tôi sử dụng điều khiển KryptonNavigator vì nó cung cấp nhiều chế độ khác nhau giúp đơn giản ẩn tab để chỉ hiển thị nội dung tab, v.v. Tuy nhiên, có thể ẩn các tab của điều khiển tab chuẩn.

KryptonNavigator

+0

Tôi đã sử dụng điều này trong quá khứ. i havent đã sử dụng bất kỳ điều khiển thuật sĩ nào. Điều tốt đẹp về điều này là bạn có thể dễ dàng tách ra các điều khiển cho mỗi tab trong thiết kế. Một giải pháp đơn giản tuyệt vời. – jrsconfitto

0

Bạn có thể tạo điều khiển tùy chỉnh cho ba màn hình khác nhau, sau đó bạn chỉ có thể thêm 3 điều khiển đó vào biểu mẫu, giúp ẩn/hiển thị các điều khiển thích hợp dễ dàng hơn. Hoặc bạn có thể tạo ba biểu mẫu riêng biệt và sau đó hiển thị biểu mẫu của bạn theo thứ tự và thực hiện các hành động trong các chương trình Main() thay vì sử dụng biểu mẫu làm đối tượng khởi động của bạn. Giống như

static void Main() 
{ 
    Form1 f1 = new Form1(); 
    if (f1.ShowDialog() == DialogResult.OK) 
    { 
    // do actions 
    // show next form 
    // etc. 
    } 
} 
+1

Điều gì sẽ xảy ra nếu người dùng nhấn nút quay lại ... Anh ấy cần phải làm việc trên các kết quả của hộp thoại cho các tình huống như vậy và có thể trở nên cồng kềnh ... Thay vào đó, điều khiển trình điều khiển/Tab sẽ hữu ích. –

0

Bạn có thể sử dụng cấu trúc usercontrol để đạt được loại hành vi này. Bạn có thể thêm điều khiển bảng điều khiển đơn giản và thay đổi nội dung của bảng điều khiển theo các nút được nhấn. Bạn chỉ cần thay đổi nội dung của bảng điều khiển bằng cách sử dụng yourPanel.Controls.Add(your_user_control). Vì vậy, các bộ điều khiển khác nhau có thể được triển khai trên một biểu mẫu.

Cảm ơn

0

Yeah, như Iain cho biết, việc kiểm soát phù thủy có lẽ là lựa chọn tốt nhất của bạn, nhưng nếu điều đó không làm việc, hãy thử tìm kiếm MultiView hoặc điều khiển Accordian. Chúng tạo các điều khiển đặc biệt cho việc ẩn/hiện các phần trên một biểu mẫu, do đó bạn không phải đi từ biểu mẫu đến biểu mẫu, và do đó bạn ở trong cùng một phạm vi toàn bộ thời gian. Làm cho việc lưu giữ các trường dễ dàng hơn rất nhiều.

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