2009-04-18 1053 views
6

me gustaría crear una simple aplicación winforms o wpf donde pueda arrastrar y soltar "tarjetas" virtuales. esto a continuación no es exactamente lo que quiero hacer, pero es lo más parecido que encontré en la web para representar la interfaz de usuario.arrastrar y soltar en winforms o wpf

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

así que básicamente quiero tener columnas en la interfaz gráfica donde puedo arrastrar y arrastre de una a la otra.

Mis preguntas son:

  1. ¿Esto sería más fácil en Windows Forms o WPF
  2. ¿Por dónde empezar?

Respuesta

2

Tanto winForms como WPF arrastrando y soltando se pueden hacer de forma similar trabajando con los eventos en el destino DragOver y Drop.

Sin embargo, con WPF tiene otras opciones. También podrá hacer que la aplicación se vea mejor si tiene una miniatura mientras la arrastra (esto es posible en las formas de inversión pero es más difícil de lograr).

Eche un vistazo a this WPF sample usa una clase de ayuda y piensa que hace exactamente lo que necesita.

0

Probablemente sea un poco más fácil en WPF debido al control Thumb que proporciona un soporte incorporado fácil de usar para arrastrar. (Si no recuerdo mal, en WinForms necesitaría manejar los eventos del mouse por su cuenta, mientras que el WPF Thumb hace esto por usted y los traduce en inicio de arrastre, delta y eventos finales).

Sin embargo, si es mucho más familiar con un marco diferente al otro probablemente empequeñecería la diferencia que haría el control Thumb.

También debe echar un vistazo a los kits de herramientas/marcos que podrían manejar esto para usted, creo que existen tanto para WinForms como para WPF (aunque no estoy seguro).

2

Estoy de acuerdo con John en que WinForms y WPF son bastante cercanos el uno del otro w.r.t. arrastrar y soltar. Pero WPF ofrece más de una "base común" para ItemsControl, lo que permite implementar más independiente de los elementos finales de UI utilizados (ListBox, ListView, TreeView ... pueden cambiarse fácilmente). Y, obviamente, WPF permite efectos mucho más sofisticados.

no te recomiendo esta entrada del blog: http://www.beacosta.com/blog/?p=53 tanto para algunos conceptos básicos de arrastrar y soltar y de un enfoque de arrastrar y soltar WPF limpio. Muestra una buena implementación de un ayudante bastante genérico para drag'n'drop desde/hacia WPF ItemsControls, realmente me gusta ese "Adorner de inserción". Y me gusta que el código de arrastrar y soltar esté muy bien separado del control del usuario mismo mediante el uso de propiedades adjuntas, lo que hace que sea mucho más fácil de usar y mantener.

0

Una buena manera de darg y soltar se explican como

detectar un arrastre como combinatination de MouseMove y MouseLeftButtonDown

encontrar los datos que desea arrastrar y crear un DataObject que contiene el formato, los datos y los efectos permitidos.

Iniciado el arrastre llamando DoDragDrop()

establecer la propiedad AllowDrop True en los elementos que desea permitir soltar.

Registre un controlador en el evento DragEnter para detectar un arrastre sobre la ubicación de colocación. Compruebe el formato y los datos llamando a GetDataPresent() en los argumentos del evento. Si los datos se pueden descartar, configure la propiedad Efecto en los argumentos del evento para mostrar el cursor del mouse apropiado.

Cuando el usuario suelta el botón del mouse, se llama al evento DragDrop. Obtenga los datos llamando al método GetData() en el objeto Data proporcionado en los eventos args.

Puede encontrar el artículo completo here