none
Drap y Drop de un control no su contenido RRS feed

  • Pregunta

  • Hola a todos gracias de ante manos lean el post, pues me gustaria saber como usar el drap y drop pero para controles es decir de un textbox de este no deseo mover eltexto de un lado a otro sino es el control en si moverlo de un lado a otro si contiene texto pues arrastrarlo con el sino pues normal.

    alguna ayudita?

    domingo, 15 de mayo de 2011 8:06

Respuestas

  • Hola victor.

    No estoy seguro de lo que quieres hacer, ya que el drag and drop es una tecnica no para mover, si no para cambiar de contenedor a un elemento, que realmente es mover, pero se requiere un contenedor destino que acepte los elementos especificos para el arrastre.

    Si quieres ver el tema del drag and drop te dejo un link donde se explica:

    http://geeks.ms/blogs/oalvarez/archive/2009/08/07/drag-amp-drop-en-wpf.aspx

     

    No obstante, por el comentario, me parece que lo que quieres hacer es mover elementos visuales, de modo que es posible que no quiereas un drag and drop, tan solo mover elementos en un contenedor.

    Bien, esto ultimo, te dejo yo un ejemplillo para mover elementos dentro de un grid (se puede usar cualquier otro contenedor, aunque lo ideal es un canvas)

        private void Grid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
          // obtener el UIElement
          FrameworkElement element = e.Source as FrameworkElement;
    
          // establecer la captura del raton en el elemento en caso de existir
          if (element != null) element.CaptureMouse();
        }
    
        private void Grid_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
          // obtener el UIElement
          FrameworkElement element = e.Source as FrameworkElement;
    
          // establecer la captura del raton en el elemento en caso de existir
          if (element != null) element.ReleaseMouseCapture();
        }
    
        private void Grid_PreviewMouseMove(object sender, MouseEventArgs e)
        {
          // obtener el UIElement
          FrameworkElement element = e.Source as FrameworkElement;
          
          // obtener el grid contenedor
          Grid grid = sender as Grid;
    
          if (element != null && element.IsMouseCaptured)
          {
            element.Margin = new Thickness(e.GetPosition(grid).X, e.GetPosition(grid).Y, 0, 0);
          }
        }
    

     

    estos eventos se los tienes que asignar a un grid y casi cualquier control que insertes dentro, lo podras mover.

     

    Por otra parte te dejo algunos post que he encontrado donde comentaba algo similar y un drag and drop con archivos:

    (igual pero creo que esta en winforms)

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/1603bed1-a367-4bab-b1f8-a7dadf8a9ab0

    (drag and drop, en winforms, pero la teoria es la misma)

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/7b4efd08-7f3f-4403-94fa-be689926e083

    (este es para crear circuitos o algo similar, tambien en winforms, aunque la teoria es la misma que comento aqui)

    http://social.msdn.microsoft.com/Forums/es-MX/vcses/thread/05f6bece-31a5-467d-bf52-8255aadaf74f

     

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    • Propuesto como respuesta Felipe Sotelo S lunes, 16 de mayo de 2011 13:37
    • Marcado como respuesta victor_23 lunes, 16 de mayo de 2011 21:49
    lunes, 16 de mayo de 2011 12:28

Todas las respuestas

  • Hola victor.

    No estoy seguro de lo que quieres hacer, ya que el drag and drop es una tecnica no para mover, si no para cambiar de contenedor a un elemento, que realmente es mover, pero se requiere un contenedor destino que acepte los elementos especificos para el arrastre.

    Si quieres ver el tema del drag and drop te dejo un link donde se explica:

    http://geeks.ms/blogs/oalvarez/archive/2009/08/07/drag-amp-drop-en-wpf.aspx

     

    No obstante, por el comentario, me parece que lo que quieres hacer es mover elementos visuales, de modo que es posible que no quiereas un drag and drop, tan solo mover elementos en un contenedor.

    Bien, esto ultimo, te dejo yo un ejemplillo para mover elementos dentro de un grid (se puede usar cualquier otro contenedor, aunque lo ideal es un canvas)

        private void Grid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
          // obtener el UIElement
          FrameworkElement element = e.Source as FrameworkElement;
    
          // establecer la captura del raton en el elemento en caso de existir
          if (element != null) element.CaptureMouse();
        }
    
        private void Grid_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
          // obtener el UIElement
          FrameworkElement element = e.Source as FrameworkElement;
    
          // establecer la captura del raton en el elemento en caso de existir
          if (element != null) element.ReleaseMouseCapture();
        }
    
        private void Grid_PreviewMouseMove(object sender, MouseEventArgs e)
        {
          // obtener el UIElement
          FrameworkElement element = e.Source as FrameworkElement;
          
          // obtener el grid contenedor
          Grid grid = sender as Grid;
    
          if (element != null && element.IsMouseCaptured)
          {
            element.Margin = new Thickness(e.GetPosition(grid).X, e.GetPosition(grid).Y, 0, 0);
          }
        }
    

     

    estos eventos se los tienes que asignar a un grid y casi cualquier control que insertes dentro, lo podras mover.

     

    Por otra parte te dejo algunos post que he encontrado donde comentaba algo similar y un drag and drop con archivos:

    (igual pero creo que esta en winforms)

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/1603bed1-a367-4bab-b1f8-a7dadf8a9ab0

    (drag and drop, en winforms, pero la teoria es la misma)

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/7b4efd08-7f3f-4403-94fa-be689926e083

    (este es para crear circuitos o algo similar, tambien en winforms, aunque la teoria es la misma que comento aqui)

    http://social.msdn.microsoft.com/Forums/es-MX/vcses/thread/05f6bece-31a5-467d-bf52-8255aadaf74f

     

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    • Propuesto como respuesta Felipe Sotelo S lunes, 16 de mayo de 2011 13:37
    • Marcado como respuesta victor_23 lunes, 16 de mayo de 2011 21:49
    lunes, 16 de mayo de 2011 12:28
  • Saludes David.

    si exactamente era eso de mover por todos lados un  textblock que me funcionaria como etiqueta sobre algunos controles mas:) gracias nuevamente!! por eso no desamparo el foro del msn pa mi es lo mejor que se puede encontrar en la web :)

    lunes, 16 de mayo de 2011 21:50
  • Justamente lo que estaba buscando gracias David!! y victor por hacer la pregunta jejejej 
    • Editado YonHaime jueves, 8 de noviembre de 2012 14:22
    jueves, 8 de noviembre de 2012 14:22