2010-10-28 10 views
8

Ho un modulo di Windows in una finestra wpf e sto cercando di usare DragMove quando faccio clic sul modulo di Windows, è una casella immagine quindi voglio essere in grado di trascinare la finestra solo cliccando l'immagine.WPF forzatura del mouse su dispositivo da premere

prendo il mouse del mio modulo verso il basso, e sollevare evento MouseLeftButtonDown della finestra WPF con:

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

Tuttavia ogni volta che posso controllare l'InputManager.Current.PrimaryMouseDevice dal mio gestore (o gestore MouseMove della mia forma), il LeftButton del lo stato è "rilasciato".

Perché è questo? Non riesco a capire un modo per forzarlo a "essere premuto" poiché tutte le proprietà sono di sola lettura.

Oppure il mio approccio è semplicemente sbagliato e non è possibile? Ho anche provato a impostare la posizione della mia finestra sulla mossa del mouse, ma alcune cose strane accadono dove i miei valori del mouse continuano a tornare alla posizione precedente.

Grazie!

modifica: Così sto regolando manualmente la posizione della finestra, ma spero comunque che qualcuno possa illuminarmi sul motivo per cui MouseDevice non viene premuto su un modulo di Windows. La "roba strana succede ..." è stato solo uno stupido errore da parte mia, ho continuato a reimpostare le coordinate del mouse sulla mossa del mouse, ma ho realizzato che il mio mouse non si sposta mai rispetto alla finestra poiché anche la finestra si muove, duh!

risposta

1

A similar issue mi ha bloccato per un po ': la proprietà ButtonState di MouseButtonEventArgs riflette lo stato in tempo reale di quel pulsante, non uno snapshot di stato eseguito quando l'evento è stato generato. Mi chiedo se lo stesso vale per lo stato di accesso a LeftButton.

Spero che questo aiuti,
Ben

+0

Beh non proprio; dal momento che clicco + trascinamento, lo stato live dovrebbe ancora essere "premuto" quando viene colpito l'evento MouseDown, tuttavia non viene premuto. Forse ha a che fare con i moduli di Windows. Quando clicco fuori dal mio modulo, mi dice che il mouse è premuto, tuttavia se faccio clic all'interno del modulo, non lo fa. – mmod

Problemi correlati