2008-09-01 9 views
0

Ich muss ein Quick-N-Dirty-Regler-Steuerelement in Visual Basic 2005 Express erstellen, deren Wert erhöht/verringert wird, indem Sie es mit der Maus "greifen" und den Cursor nach oben/unten bewegen. Da der Knopf selbst nicht bewegt wird, muss ich die Mausbewegung außerhalb des Rechtecks ​​des Steuerelements verfolgen.Wie implementieren Sie Maus ziehen in Visual Basic?

Ich benutze eine Label mit einer ImageList, um dies zu implementieren (ich habe eine Liste von 127 Bitmaps, die den Knopf in verschiedenen Positionen darstellen).

Auf welche Ereignisse sollte ich reagieren?

Antwort

0

Sie benötigen das Steuerelement, um drei Ereignisse zu behandeln: Mouse Down, Mouse Move und Mouse Up. Beim Ereignis "Mouse Down" müssen Sie die Maus erfassen. Dies bedeutet, dass die Mausnachrichten an das Steuerelement gesendet werden, das das Capture enthält. Wenn im Mausbewegungsereignis die Eingabe erfasst wird, wird das angezeigte Bild abhängig von der Größe der Mausbewegung aktualisiert. Deaktivieren Sie im Capture-Ereignis die Erfassung, wenn die Eingabe erfasst wurde.

Der Vorschlag von boolean jjnguy ist unnötig, da die Capture-Eigenschaft eines Controls lesbar ist, so dass festgestellt werden kann, ob das Capture gesetzt wurde.

0

Ihr Problem wird sein, zu bestimmen, welche Bitmap basierend auf den Koordinaten, die die Maus im mouse_move-Ereignis meldet, angezeigt werden muss. Sie müssen etwas Magie anwenden, um die Koordinaten zu transformieren und einen Wert zu finden, mit dem Sie das richtige Bild auswählen können.

Es klingt nicht zu kompliziert, nur ein bisschen Versuch und Irrtum in der Mathematik. Skizz hat Ihnen bereits gezeigt, wie Sie die Ereignisse erfassen können.