2009-04-18 39 views
6

tôi muốn tạo ra một đơn giản winforms hoặc ứng dụng wpf nơi tôi có thể kéo và thả ảo "thẻ". điều này dưới đây không phải là chính xác những gì tôi muốn làm, nhưng nó là điều gần nhất mà tôi tìm thấy trên web để đại diện cho giao diện người dùng.kéo và thả trong winforms hoặc wpf

http://www.greenpeppersoftware.com/confluence/plugins/advanced/gallery-slideshow.action?imageNumber=1&pageId=24870977&decorator=popup&galleryTitle=Task+board+and+transitions

nên về cơ bản tôi muốn có cột trong GUI nơi tôi có thể kéo và kéo từ một đến khác.

Câu hỏi của tôi là:

  1. này sẽ dễ dàng hơn trong winforms hoặc WPF
  2. nơi nào tôi bắt đầu?

Trả lời

2

Trong cả việc kéo và thả WinForms và WPF đều có thể được thực hiện theo cách tương tự bằng cách làm việc với các sự kiện trên mục tiêu DragOver và Drop.

Tuy nhiên với WPF bạn có các tùy chọn khác. Bạn cũng sẽ có thể làm cho ứng dụng trông đẹp hơn bằng cách có một hình thu nhỏ khi bạn kéo (điều này có thể trong winforms nhưng khó đạt được hơn).

Hãy xem this WPF sample nó sử dụng lớp trợ giúp và nghĩ rằng nó thực hiện chính xác những gì bạn cần.

0

Nó có thể sẽ dễ dàng hơn một chút trong WPF vì điều khiển Thumb giúp dễ dàng sử dụng hỗ trợ tích hợp để kéo. (Nếu tôi nhớ chính xác, trong WinForms bạn sẽ cần phải xử lý các sự kiện chuột cho mình, trong khi đó WPF Thumb thực hiện điều này cho bạn và dịch chúng thành các sự kiện kéo, đồng bằng và kết thúc.)

Tuy nhiên nếu bạn quen thuộc hơn nhiều với một khuôn khổ khác hơn so với cái khác có lẽ sẽ lùn sự khác biệt mà điều khiển Thumb sẽ tạo ra.

Bạn cũng nên có một cái nhìn xung quanh cho bộ công cụ/khung có thể xử lý này cho bạn - Tôi nghĩ rằng chúng tồn tại cho cả WinForms và WPF (không chắc chắn mặc dù).

2

Tôi đồng ý với John trong đó WinForms và WPF là khá gần với một w.r.t. drag'n'drop. Nhưng WPF cung cấp nhiều hơn một "cơ sở chung" cho ItemsControl, cho phép thực hiện độc lập hơn các thành phần UI cuối cùng được sử dụng (ListBox, ListView, TreeView ... có thể dễ dàng chuyển đổi). Và rõ ràng WPF cho phép nhiều hiệu ứng lạ mắt hơn.

Tôi thực sự khuyên bạn nên đăng bài đăng trên blog này: http://www.beacosta.com/blog/?p=53 cả hai đối với một số khái niệm cơ bản về kéo và cho phương pháp kéo thả WPF sạch. Nó cho thấy một thực hiện tốt đẹp của một helper khá chung chung cho drag'n'drop từ/đến WPF ItemsControls, tôi thực sự thích rằng "Chèn Adorner". Và tôi làm như vậy mã drag'n'drop được tách biệt một cách độc đáo khỏi chính điều khiển người dùng bằng cách sử dụng các thuộc tính đính kèm, giúp dễ sử dụng và bảo trì hơn.

0

Một cách tốt cho darg và thả được giải thích như

Phát hiện một kéo như một combinatination của MouseMove và MouseLeftButtonDown

Tìm các dữ liệu bạn muốn kéo và tạo ra một DataObject có chứa định dạng, dữ liệu và các hiệu ứng được phép.

Tiến hành việc kéo bằng cách gọi DoDragDrop()

Thiết lập thuộc tính AllowDrop True trên các yếu tố bạn muốn cho phép giảm.

Đăng ký trình xử lý cho sự kiện Kéo để phát hiện kéo trên vị trí thả. Kiểm tra định dạng và dữ liệu bằng cách gọi GetDataPresent() trên sự kiện args. Nếu dữ liệu có thể bị xóa, hãy đặt thuộc tính Effect trên sự kiện args để hiển thị con trỏ chuột thích hợp.

Khi người dùng nhả chuột, sự kiện DragDrop được gọi. Lấy dữ liệu bằng cách gọi phương thức GetData() trên đối tượng Data được cung cấp trong sự kiện args.

Bạn có thể tìm thấy bài viết đầy đủ here