2011-10-14 50 views
8

Có cách nào tôi có thể tạm dừng tất cả lệnh cập nhật giao diện người dùng trong Winform không? Hoặc tôi có một cảm giác nhỏ tôi đang cố gắng để đi về điều này một cách hoàn toàn sai, do đó, có một cách khác xung quanh vấn đề của tôi: Tôi về cơ bản tải một trạng thái lưu của một điều khiển, tải các điều khiển mới trên tất cả nó. Tuy nhiên, tôi thực hiện một số điều này trong chuỗi giao diện người dùng và một số tải dữ liệu từ một chuỗi khác, sau đó điền vào giao diện người dùng.Tôi có thể cố định hiển thị giao diện người dùng của mình trong khi biểu mẫu của tôi tải không?

Vì vậy, hiệu quả tôi có khi nó đang tải là người dùng có thể nhìn thấy một vài trong số các điều khiển xuất hiện ở một nơi, sau đó di chuyển đi nơi khác về hình thức, thay đổi giá trị, vv

Tôi muốn thích tải màn hình thay vì điều này và tải các điều khiển trong nền. Đó là một ứng dụng khá lớn và nó không quan trọng nên việc thiết kế lại mã của tôi không thực sự là một lựa chọn.

Tôi có thể dừng tất cả lệnh Update() trên một điều khiển trong khi phương thức đang thực thi không?

+0

đề nghị của tôi - show hình thức dont khi render của nó. Nếu bạn đóng băng người dùng UI có thể thấy biểu mẫu trống và sau một thời gian bùng nổ, tất cả các điều khiển sẽ xuất hiện. – Reniuz

+0

Tốt thôi, xin lỗi tôi đã không giải thích chút này. Biểu mẫu mặc định chứa phiên bản trống của điều khiển này và sau đó người dùng có thể kéo các điều khiển xung quanh và chọn các tùy chọn nhất định, thêm điều khiển mới, v.v., sau đó lưu trạng thái của điều khiển sang XML. Câu hỏi này là khi người dùng quyết định mở tệp hiện có. – Connell

Trả lời

12

Bạn có thể sử dụng các phương pháp SuspendLayoutResumeLayout để bọc thiết lập giao diện người dùng trong một thao tác (không cập nhật kết xuất).

Về cơ bản (giả sử SomeMethod là trong lớp theo mẫu):

private void SomeMethod() 
{ 
    this.SuspendLayout(); 
    // all UI setup 
    this.ResumeLayout(); 
} 
+1

Rực rỡ, tôi biết nó sẽ là một cái gì đó đơn giản, tôi chỉ là Googling cho những thứ sai có vẻ như. Cảm ơn bạn! – Connell

+0

Unfortuntelly nó không hoạt động trong khi Form đã được nhìn thấy. Có một cách tốt hơn: http://stackoverflow.com/questions/13711812/parallel-generation-of-ui/15020157#15020157 –

4

nó thực sự phụ thuộc trên logic hình thức của bạn, nói chung bạn không nên quá tải phương pháp Load hoặc Show với những thứ quá nhiều đến nỗi các hình thức thể được hiển thị và vẽ một cách nhanh chóng và luôn nhìn phản hồi.

trong một số trường hợp nó có thể giúp đỡ để sử dụng SuspendLayout và phương pháp ResumeLayout, xem tại đây: Control.SuspendLayout Method

+0

Nó không được tải. Việc kiểm soát tải ban đầu trong mã thiết kế, mà tải một điều khiển trống, như vậy. Nhưng có một phương thức LoadData trên điều khiển đang tải trạng thái biểu mẫu từ một tệp XML sau khi người dùng được nhắc mở một tệp. – Connell

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