Benutzer mit den meisten Antworten
Mouse.SetCursor(cursors.SizeAll) Methode funktioniert nicht

Frage
-
Hallo liebe msdn Gemeinde,
ich habe ein kleines Problem mit dem Verändern der Form des Mauszeigers zur Laufzeit.
In diesem Programmbeispiel tut sich garnichts mit dem Mauszeiger.
Er behält immer die Form .Arrow, sollte beim Auftreten des MouseMove Ereignisses
die Form .SizeAll annehmen.
In der Bibliothek habe ich zwei SetCursor Methoden gefunden.
IToolboxService.SetCursor-Methode
Namespace: System.Drawing.Design
und
Mouse.SetCursor-Methode
Namespace: System.Windows.Input
Welches ist die Richtige?
In der Bilbiothek bin ich auf dieses Beispiel gekommen.
http://msdn.microsoft.com/de-de/library/ms771569.aspx
Hilft mir nicht weiter, da in xaml erstellt.
Habe schon sämtliche Foren abgesucht. Nichts zu diesem Thema gefunden.
Grüße
Ellen
'dieses Programm hat die Aufgabe ein Steuerelement auf einer Form zu verschieben 'mit MouseDown wird es "angefasst"" 'mit MouseMove bei gehaltener Maustaste verschoben 'mit MouseUp wieder "losgelassen" und verbleibt in der Position Private moveControl As Boolean = False Private locStart, ptStart, newloc, mouseloc As Point Private parentClass As Control Private Sub GrLabel1_mouseMove(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles GrLabel1.MouseMove 'der Name der parent class oder form: parentClass = CType(sender, Control).Parent 'die Größe des verfügbaren Client Bereiches innerhalb der 'ich das Steuerelement verschieben kann: Dim parentsize As Size = CType(sender, Control).Parent.ClientSize 'die Größe des Steuerelementes (Grlabel1): Dim clSize As Size = CType(sender, Control).ClientSize mouseloc = Me.PointToClient(MousePosition) If moveControl Then newloc = locStart + mouseloc - ptStart ' verschieben nur innerhalb von parent.clientsize If newloc.X + clSize.Width <= parentsize.Width And _ newloc.X >= 0 And _ newloc.Y + clSize.Height <= parentsize.Height And _ newloc.Y >= 0 Then GrLabel1.Location = newloc End If End Sub 'Debugger liefert bei SetCursor in beiden Fällen False zurück 'statusDown: False 'statusUp: False Private Sub GrLabel1_mouseDown(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles GrLabel1.MouseDown 'Ursprungskoordinate des Label locStart = CType(sender, Control).Location moveControl = True 'Startkoordinate MouseDown ptStart = Me.PointToClient(MousePosition) 'folgendes funktioniert auch nicht 'DisplayArea.Cursor = Cursors.Arrow 'Mouse.OverrideCursor = Cursors.SizeAll 'Mouse.UpdateCursor() Dim i As Boolean = Mouse.SetCursor(Cursors.SizeAll) Debug.Print("statusDown: " + i.ToString) End Sub Private Sub GrLabel1_mouseUp(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles GrLabel1.MouseUp moveControl = False 'Mouse.OverrideCursor = crsArrow Dim i As Boolean = Mouse.SetCursor(Cursors.Arrow) Debug.Print("statusUp: " + i.ToString) End Sub
- Bearbeitet Ellen Ramcke Samstag, 5. Juni 2010 20:47 link als hyperlink
Antworten
-
Hallo Ellen,
in Windows Forms Anwendungen veränderst Du den Cursor normal über die Cursor-Eigenschaft des betreffenden Objects oder allgemein für Deine Anwendung über Cursor.Current:
Private Sub Button1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs _ ) Handles Button1.MouseDown Cursor.Current = Cursors.SizeAll End Sub Private Sub Button1_MouseUp(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs _ ) Handles Button1.MouseUp Cursor.Current = Cursors.Default End Sub
Die Mouse.SetCursor Methode ist eher spezifisch für Windows Presentation Foundation (WPF).
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort vorgeschlagen Elmar BoyeEditor Montag, 4. Januar 2010 15:49
- Als Antwort markiert Ellen Ramcke Montag, 4. Januar 2010 16:48
- Bearbeitet Thorsten DörflerModerator Montag, 4. Januar 2010 18:26 Typo
Alle Antworten
-
Hallo Ellen,
in Windows Forms Anwendungen veränderst Du den Cursor normal über die Cursor-Eigenschaft des betreffenden Objects oder allgemein für Deine Anwendung über Cursor.Current:
Private Sub Button1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs _ ) Handles Button1.MouseDown Cursor.Current = Cursors.SizeAll End Sub Private Sub Button1_MouseUp(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs _ ) Handles Button1.MouseUp Cursor.Current = Cursors.Default End Sub
Die Mouse.SetCursor Methode ist eher spezifisch für Windows Presentation Foundation (WPF).
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort vorgeschlagen Elmar BoyeEditor Montag, 4. Januar 2010 15:49
- Als Antwort markiert Ellen Ramcke Montag, 4. Januar 2010 16:48
- Bearbeitet Thorsten DörflerModerator Montag, 4. Januar 2010 18:26 Typo
-
Hallo Thorsten,
ich musste erst einen Verweis aus dem Projekt entfernen (System.Windows.Input). Jetzt geht es.
Die Cursor Klasse gibt es in zwei Namespaces. Das ist schon verwirrend.
Richtig ist die Cursor Klasse in System.Windows.Forms
Naja, habe mich auch zu sehr auf setCursor fixiert.
Vielen Dank und schöne Grüße
Ellen