Estoy usando este gran arrastrar/soltar marco: http://code.google.com/p/gong-wpf-dragdrop/
Tengo dos cuadros de lista – a y B. Cuando se arrastra desde B a A, quiero que el cursor del ratón para cambiar tan pronto como el cursor se encuentra dentro de la zona de control listbox A.

Casi he conseguido. Mediante el uso de la IDropTarget interfaz de la siguiente manera:

void IDropTarget.DragOver(DragOver drag)
{
 drag.Effects = DragDropEffects.Copy | DragDropEffects.Move;

 //some logic to determine if hovering over listbox A
 //...

 if (hoveringOverListA)
 {
  ListBoxA.Cursor =  ((FrameworkElement) Application.Current.Resources["ListboxACursor"]).Cursor;
 }
}

El único problema es que, mientras yo estoy arrastrando el ratón sobre el cursor que se muestra es el de la operación no permitida (el círculo negro con una línea que lo atraviesa). Tan pronto como me suelte el botón del ratón, luego veo a mi ListboxACursor aparecen. Así es como se trata de un retraso en la reacción, como esperando a que me Gota en lugar de hacerlo mientras estoy DragOver ing.

Si alguien puede ver lo que está mal con el código, me sería de gran aprecio. Tengo la sensación de que se podría hacer con el DragDropEffects pero es principalmente una corazonada.

Gracias

  • ¿Establece el AllowDrop de la bandera en el control que usted está tratando de caer en?
  • Yo en realidad no quiere permitir a la caída. El cursor personalizado que quiero mostrar es en realidad, se supone para hacer lo más obvio (que de cualquier defecto de los cursores) que el artículo tiene que ser arrastrado a otra parte.
InformationsquelleAutor theqs1000 | 2013-01-15

2 Comentarios

  1. 6

    Responder a esta pregunta porque es la parte superior de Google resultado.

    protected override void OnGiveFeedback(System.Windows.GiveFeedbackEventArgs e)
    {
        Mouse.SetCursor(Cursors.Hand);
        e.Handled = true;
    }

    Este método debe ser definido en el origen de arrastre. Es fundamental que debe marcar el evento como se manejan y que NO llame base.OnGiveFeedback, como hacer bien el resultado será el valor predeterminado arrastre el cursor de la invalidación de los cambios.

    Observe cómo también estoy usando Mouse.SetCursor en lugar de la más obvia FrameworkElement.Cursor. El último es un persistente de la propiedad de el origen de arrastre de los elementos, y es poco probable que usted realmente desea modificar

    • Muy buena respuesta!
  2. 0

    Que es porque Windows intenta utilizar su propio cursor para garantizar un defecto look&feel. Usted puede evitar esto explícitamente deshabilitar el cursor predeterminado. Ver GiveFeedback evento en esta tutorial

     private void DragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
     {
       e.UseDefaultCursors = e.Effect != DragDropEffects.Copy;
     }
    • Hola, he intentado esto, pero el problema persiste. ¿Hay alguna otra manera de reemplazar por la fuerza el cursor?
    • Hmm, no tengo otra idea. Lo siento

Dejar respuesta

Please enter your comment!
Please enter your name here