2013-03-17 38 views
5

Một số bối cảnhra lệnh danh sách các điều khiển người dùng (với bổ sung và xóa)

tôi đang tạo ra một ứng dụng cho phép người dùng tạo ra sự sắp xếp kệ cơ bản, tôi muốn tạo một giao diện đại diện cho khối kệ (một bộ kệ) bên cạnh nhau theo thứ tự (từ trái sang phải) và cho phép người dùng chỉnh sửa chi tiết của họ. Mỗi khối sẽ có một loạt chi tiết như thứ tự của nó, tên, chiều rộng, chiều cao và một số giá.

Yêu cầu

Tôi muốn giao diện để có một danh sách cuộn ngang (tối đa 20) điều khiển người dùng. Mỗi điều khiển người dùng sẽ đại diện cho các chi tiết của một khối, với một hình thức cơ bản để các chi tiết này được chỉnh sửa.

Người dùng sẽ có thể nhấn một nút trong điều khiển người dùng xóa nó và sắp xếp lại các khối khác và cũng thêm khối vào cuối danh sách.

Câu hỏi của tôi

Làm thế nào để duy trì một danh sách có thứ tự các các điều khiển 'kệ khối' người sử dụng, và có hình thức xử lý cấp bách của nút xóa trong bất kỳ điều khiển mà làm cho nó bị xóa và danh sách sẽ được sắp xếp lại? Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời.

Ảnh chụp màn hình

Tôi chỉ mới bắt đầu chương trình giao diện vì vậy tôi chỉ có thể cung cấp một mô hình nhanh chóng lên những gì tôi muốn giao diện trông giống như:

enter image description here

cơ bản như tôi hy vọng nó sẽ cho bạn một số ý tưởng về những gì tôi đang tìm kiếm.

+0

Được cập nhật với thiết kế màn hình. – MarkH

+0

[FlowLayoutPanel] (http://msdn.microsoft.com/en-us/library/system.windows.forms.flowlayoutpanel.aspx), nếu bạn muốn xử lý ràng buộc dữ liệu theo cách thủ công. Hoặc [DataRepeater] (http://msdn.microsoft.com/en-us/library/cc488280.aspx). Tôi không bao giờ sử dụng 'DataRepeater' bản thân mình, nhưng nó phải khá giàu tính năng, theo MSDN. – Neolisk

Trả lời

0

Bạn có thể sử dụng BindingList để lưu trữ các khối của mình. Một BindingList sẽ thông báo cho điều khiển UI (ví dụ: một ListBox) rằng dữ liệu đã được thay đổi như một khối bị xóa. Giao diện người dùng sau đó sẽ phản ánh điều này bằng cách xóa khối khỏi ListBox. Nếu bạn quen thuộc với WPF/Silverlight databinding này tương tự như, nhưng không hoàn toàn giống như, một danh sách ObservableCollection (nếu bạn đang nhắm mục tiêu .NET 4, tôi tin rằng bạn có thể sử dụng ObserverableCollections trong WinForm mà không gặp nhiều rắc rối nhưng ai đó người nào khác có thể làm rõ điều đó).

Hoặc, bạn có thể sử dụng BindingSource thay vì sử dụng trực tiếp BindingList.

+0

Hi, thaks cho câu trả lời nhanh chóng của bạn, tôi đã nghĩ rằng một flowlayoutpanel phù hợp với người dùng điều khiển nhiều hơn?Thấy như tôi không cần phải đối phó với các điều khiển được lựa chọn vv, chỉ cần đặt ra theo chiều ngang. Bạn có đồng ý không? nếu như vậy từ những gì tôi đã đọc Tôi không nghĩ rằng một danh sách ràng buộc sẽ làm việc với một bảng điều khiển bố trí dòng chảy? – MarkH

+1

Ah, tôi nghĩ rằng tôi đã có một chút hỗn hợp. Tôi cho rằng bạn muốn có một cấu trúc dữ liệu để giữ và duy trì các hộp có thể được hiển thị trên giao diện người dùng. Bạn có thể sử dụng FlowLayoutPanel nếu muốn nhưng điều đó có nghĩa là tương tác trực tiếp với giao diện người dùng bất cứ khi nào bạn muốn loại bỏ điều khiển (ví dụ: bằng cách gọi FLowLayoutPanel.Controls.Remove()) chứ không phải với cấu trúc dữ liệu cơ bản. – keyboardP

+0

Vâng, hóa ra tôi đã làm cho vấn đề phức tạp hơn là cần thiết. Một flowlayout đầy usercontrols là tất cả những gì cần thiết, loại bỏ UC để xóa. Cảm ơn bạn đã giúp đỡ – MarkH

0

Cách đặt điều khiển lưới ẩn trên biểu mẫu của bạn.
Sau đó, bạn chỉ cần thêm/xóa các hàng vào lưới với dữ liệu mong muốn và mọi thứ được giữ rất trật tự. Một lợi thế ở đây là cho mục đích gỡ lỗi, bạn luôn có thể làm cho lưới có thể nhìn thấy để xem tất cả dữ liệu một cách nhanh chóng .

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