2010-09-16 24 views
12

Tôi đang xây dựng một điều khiển bao gồm các nút 15x15 = 225 và cần phải thay đổi kích thước. Bởi vì nó là một mạng lưới, neo đậu và docking sẽ không hoạt động. Tôi đã thử cả TableLayoutPanel cũng như xử lý các sự kiện thay đổi kích cỡ để điều khiển kích thước và vị trí thủ công. Trong cả hai trường hợp, thay đổi kích thước là không thể chấp nhận chậm. Suspend/Resume Bố cục trong chức năng thay đổi kích thước khi tôi đang xử lý bố cục theo cách thủ công không giúp ích gì.C# Winforms: Hiển thị Hiệu quả Nhiều Điều khiển

Có điều gì cơ bản mà tôi có thể thay đổi để tăng tốc độ, hay đây chỉ là hạn chế của các điều khiển gốc? Tôi hiểu tôi có thể xây dựng một điều khiển tùy chỉnh từ đầu, xử lý các nhấp chuột và vẽ bản thân mình - mặc dù tôi muốn gắn bó với các điều khiển gốc nếu có thể.

Sửa

Tôi biết đó là rất nhiều nút. Câu hỏi của tôi là câu hỏi kỹ thuật; không phải là một thiết kế giao diện người dùng.

+2

Đó là địa ngục của rất nhiều nút. Bạn cần cái nút nào cho nhiều nút? –

+0

+1 đến Alastair Pitts. Chúng ta nên tránh quá nhiều nút xuất hiện trên GUI. Tôi nghĩ rằng người dùng cuối cùng cũng đồng ý với tôi. –

+0

Hồ sơ ứng dụng trong khi thay đổi kích thước để xem lý do tại sao quá trình này mất quá nhiều thời gian. –

Trả lời

6

WinForms không xử lý hiển thị nhiều điều khiển này cùng một lúc.

Nếu tôi ở trong tình huống của bạn, trước tiên tôi sẽ xem xét liệu tôi có thể chia nhỏ biểu mẫu trong một số trang hay không. Trong nhiều trường hợp, sẽ dễ hiểu hơn đối với người dùng.

Nhưng trong trường hợp của bạn dường như không phải là một tùy chọn. Bạn đang làm một cái gì đó giống như một trò chơi phong cách tàu quét mìn? Ở đó bạn có một mạng lưới các nút mà tất cả đều có thể nhấp được. Trong tình huống như vậy tôi sẽ đề nghị bạn đi cho một chủ sở hữu tùy chỉnh rút ra kiểm soát nơi bạn củng cố tất cả các nút trong một điều khiển. Không xây dựng một điều khiển tổng hợp chứa 225 nút - điều đó sẽ không giúp ích gì cả :-)

Tùy chọn cuối cùng có thể là chuyển sang WPF. WPF sử dụng phần cứng tăng tốc rendering để nó có thể nhanh hơn, nhưng với rất nhiều điều khiển thậm chí không có thể có thể giúp đỡ.

+0

Gotcha. Bạn có thể chỉ cho tôi một điều gì đó vượt ra ngoài "không thể xử lý nó" - có một bài đăng blog/giải thích hiệu suất ở đâu đó có thể giúp tôi hiểu điều gì khiến mọi thứ chết không? 1 vì không cố gắng khéo léo lẩn tránh câu hỏi kỹ thuật. Tôi biết nó có rất nhiều nút và tôi hiểu điều đó. Kiểm soát tùy chỉnh nó được. – phillipwei

+0

Tôi đang nói ra kinh nghiệm cá nhân ở đây :-) Tốt hơn nhiều so với bất kỳ bài đăng trên blog nào ... hehe. –

+0

Không thực sự. Tôi đã cố gắng để làm những thứ tương tự và kết thúc với một hình thức hoàn toàn không sử dụng được. Hiệu suất là ok đến một điểm nhất định mà nó bị hỏng. Có lẽ bạn có thể lấy đi với một lưới 10x10, có thể 12x12 hoặc 8x8, nhưng tại một thời điểm nhất định nó sẽ trở thành không sử dụng được. –

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