2011-09-02 51 views
7

Quiero arrastrar y soltar un control (etiqueta, por ejemplo) en una aplicación winform. Vi algunos ejemplos sobre cómo arrastrar y soltar texto, pero esto no es lo que quiero. Quiero permitir que el usuario mueva un control. ¿Alguien puede dirigirme a algunos recursos o ejemplos? Gracias.arrastrar y soltar controles winform

+0

¿solo quieres reubicar los controles o necesitas las características de "soltar" donde está la información tr ¿ansioso? – Carsten

+3

[Aquí] (http://www.codeproject.com/Tips/178587/Draggable-WinForms-Controls?display=Print) es una extensión simple útil. – Reniuz

+0

Ver también mi texto en The Code Project: [www.codeproject.com/Articles/36412/Drag-and-Drop-ListBox](http://www.codeproject.com/Articles/36412/Drag-and-Drop- Cuadro de lista). ¡Pero solo mover una etiqueta en un formulario no es arrastrar y soltar! –

Respuesta

3

debería ver ejemplos sobre cómo hacer que los controles se puedan arrastrar.

Aquí hay algunas respuestas en SO también.

ver este Move controls when Drag and drop on panel in C#

este es un ejemplo completo de cómo acoger el diseñador de la forma:

Tailor Your Application by Building a Custom Forms Designer with .NET

hice algo similar en Delphi hace mucho tiempo, va a buscar el código fuente, convertir en .NET C# y hacer una página wiki sobre ese asunto, ya que se está convirtiendo en una pregunta tan popular recientemente :)

+0

Davide Piras sería bueno si puede mostrar cómo el diseñador de formularios de alojamiento funciona mejor que agregar código para permitir el movimiento de control y guardar las nuevas posiciones para más adelante cargando \t BTW para el enlace original para el diseñador de hosting es obsoleto. un posible enlace es https://blogs.msdn.microsoft.com/rprabhu/2004/06/15/designer-hosting-in-whidbey/?replytocom=5005#respond pero el reemplazo no es muy útil ya que lo hace no mostrar para emitir código C# o qué se puede hacer con la superficie del diseñador. todavía hay muchos detalles de implementación omitidos. – gg89

1

Por lo que yo entiendo, donde desea dejar caer un control se llama contenedor, de hecho cualquier control puede actuar como un contenedor. Entonces, primero ese contenedor, necesita habilitar la propiedad de soltar y la propiedad de arrastre de los controles que necesita arrastrar.

A continuación, escriba los eventos (Candrag, candrop, controladded, etc.) para cada control en donde, en algunos, lógica para mantener los objetos y mostrarlos como quiera.

Digamos un ejemplo en el que desea arrastrar el texto de imagen de combombox a un cuadro de imagen y luego hacer que el recuadro analice el texto y el nombre del archivo en un directorio y cargue esa imagen en su si está presente.

Así que aquí, cuando empiezas a arrastrar el texto desde combombox, tienes que escribir algo de lógica en el evento candrag. Luego, una vez que sueltas, tienes que escribir lógica para entender qué tipo de objeto se agregó y obtener el texto relacionado con él (descifrarlo un poco) en el control donde dejas caer otro control.

Disculpe, no tengo código para darle ahora, pero espero que tenga la idea de cómo se hace. ¿Puede ser este artículo puede ayudarte? http://vicky4147.wordpress.com/2007/02/04/a-simple-drag-drop-in-winforms/

+0

De hecho, puede hacerlo, pero no podría soltar controles en un botón o casilla de verificación. solo forma o paneles y algunos otros son buenos contenedores. –

+0

Sí, es cierto, puede que no sea así, no tiene sentido arrastrar n cayendo en el cuadro de texto a la derecha. Después de todo, el cuadro de texto solo puede mostrar el texto (si está presente) en el control eliminado. Así que no uso :). – Zenwalker