2010-10-28 16 views
8

Tengo un formulario de Windows en una ventana wpf, y estoy tratando de usar DragMove cuando hago clic en el formulario de Windows, es un cuadro de imagen, así que quiero ser capaz de arrastrar la ventana solo haciendo clic en la imagen.WPF Forcing MouseDevice para ser presionado

que coger el ratón de mi formulario de abajo, y elevar caso MouseLeftButtonDown de la ventana de WPF con:

if (e.Button == MouseButtons.Left) 
{ 
    MouseDevice mouseDev = InputManager.Current.PrimaryMouseDevice; 
    MouseButtonEventArgs mouseEvent = new MouseButtonEventArgs(mouseDev, 0, MouseButton.Left) 
     { 
      RoutedEvent = MouseLeftButtonDownEvent 
     }; 
    RaiseEvent(mouseEvent); 
} 

Sin embargo cada vez que puedo comprobar el InputManager.Current.PrimaryMouseDevice de mi manejador (o manipulador MouseMove de mi forma), el LeftButton de estado es "liberado".

¿Por qué es esto? No puedo encontrar una manera de forzar que se "presione", ya que todas las propiedades son de solo lectura.

¿O mi enfoque es simplemente incorrecto y no es posible? También intenté configurar la ubicación de mi ventana en el movimiento del mouse, pero ocurren cosas raras donde los valores de mi mouse vuelven a la posición anterior.

Gracias!

editar: Así que estoy ajustando manualmente la ubicación de la ventana, pero todavía espero que alguien me pueda aclarar por qué MouseDevice no se presiona en un formulario de Windows. Las "cosas raras suceden ..." fue solo un error tonto de mi parte, seguí restableciendo las coordenadas del mouse al mover el mouse, pero me di cuenta de que mi mouse nunca se mueve con respecto a la ventana ya que la ventana también se mueve, ¡duh!

Respuesta

1

A similar issue me sorprendió por un tiempo: la propiedad ButtonState de MouseButtonEventArgs refleja el estado en tiempo real de ese botón, no una instantánea de estado tomada cuando se produjo el evento. Me pregunto si lo mismo es cierto con respecto al acceso al estado de LeftButton.

Espero que esto ayude,
Ben

+0

Bueno no del todo; como hago clic + arrastrar, el estado en vivo todavía debe ser "presionado" cuando se toca el evento MouseDown, sin embargo no se presiona. Tal vez tiene que ver con los formularios de Windows. Cuando hago clic fuera de mi formulario, me dice que se presiona el mouse, sin embargo, si hago clic dentro del formulario, no es así. – mmod

Cuestiones relacionadas