02/10/12 8:59
lupino
Buongiorno a tutti,
vado subito al nocciolo del problema, ho creato un nuovo controllo personalizzato che riproduce una sorta di visualizzatore analogico (circular gauge) in cui i vari valori sono indicati dalla classica lancetta ruotante, modello tester per intenderci.
Detto controllo è formato essenzialmente da una picturebox (picNeedle) contenente l'immagine della lancetta che, dopo essere fatta opportunamente ruotare viene passata alla proprietà image di un'altra picturebox (picGauge) avente come backgroundimage lo sfondo del visualizzatore.
Il nuovo controllo viene poi posto su un normale form senza bordi a cui ho dato una forma circolare (anche l'occhio vuole la sua parte), il tutto nel tentativo di creare una sorta di gadget il cui scopo dovrebbe essere quello di permettermi di visualizzare determinati valori senza per forza dover mantenere aperto il programma principale.
Detto form dovrebbe però poter essere mosso col mouse alla stregua dei suoi "cugini" normali.
Ho provato con:
(dspAnalogical è il nome dato al controllo) ma come è ovvio, essendo il controllo completamente ricoperto da picGauge, il "trucco" non funziona.
Com'è possibile passare gli eventi MouseDown e MouseMove che avvengono sul controllo alla relativa picturebox (penso sia questa la strada giusta)?
vado subito al nocciolo del problema, ho creato un nuovo controllo personalizzato che riproduce una sorta di visualizzatore analogico (circular gauge) in cui i vari valori sono indicati dalla classica lancetta ruotante, modello tester per intenderci.
Detto controllo è formato essenzialmente da una picturebox (picNeedle) contenente l'immagine della lancetta che, dopo essere fatta opportunamente ruotare viene passata alla proprietà image di un'altra picturebox (picGauge) avente come backgroundimage lo sfondo del visualizzatore.
Il nuovo controllo viene poi posto su un normale form senza bordi a cui ho dato una forma circolare (anche l'occhio vuole la sua parte), il tutto nel tentativo di creare una sorta di gadget il cui scopo dovrebbe essere quello di permettermi di visualizzare determinati valori senza per forza dover mantenere aperto il programma principale.
Detto form dovrebbe però poter essere mosso col mouse alla stregua dei suoi "cugini" normali.
Ho provato con:
Dim posX As Integer Dim posY As Integer Private Sub dspAnalogical_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles dspAnalogical.MouseDown posX = -e.X posY = -e.Y End Sub Private Sub dspAnalogical_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles dspAnalogical.MouseMove If e.Button = MouseButtons.Left Then Dim mousePos As Point = Control.MousePosition mousePos.Offset(posX, posY) CType(sender, Display).FindForm().Location = mousePos End If End Sub
(dspAnalogical è il nome dato al controllo) ma come è ovvio, essendo il controllo completamente ricoperto da picGauge, il "trucco" non funziona.
Com'è possibile passare gli eventi MouseDown e MouseMove che avvengono sul controllo alla relativa picturebox (penso sia questa la strada giusta)?
Ultima modifica effettuata da lupino 02/10/12 9:00
aaa