Multitouchgesten

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von speario.

    Multitouchgesten

    Hallo zusammen,

    gibt es in VB.net die Möglichkeit, einen Multitouch sinnvoll zu benutzen?
    Also ohne WPF, in einer normalen Windows-Forms-Anwendung.

    In einem eingebetteten Browserfenster funktioniert das ganze und man kann mit 2 Fingern zoomen.
    Normale "Einfinger"-Wischgesten in Listboxen, Listviews, DGVs etc. funktionieren auch.

    Jetzt möchte ich eine Art Totmannschaltung programmieren - beim Druck auf einen Button (MouseDown-Event) soll ein zweiter Button eingeblendet werden. Durch Betätigen dieses Buttons soll eine Funktion ausgelöst werden.
    Damit soll verhindert werden, dass diese Funktion versehentlich ausgelöst wird.

    Hier mein Testcode

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. Button2.Hide()
    4. End Sub
    5. Private Sub Button1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
    6. Button2.Show()
    7. End Sub
    8. Private Sub Button1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp
    9. Button2.Hide()
    10. End Sub
    11. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    12. If RadioButton1.Checked Then
    13. RadioButton1.Checked = False
    14. Else
    15. RadioButton1.Checked = True
    16. End If
    17. End Sub
    18. End Class


    Druck auf Button1 blendet Button2 ein, Loslassen des Button1 versteckt Button2 wieder.
    Problem hierbei - ich kann den zweiten Button nicht bedienen, während der Focus auf Button1 ist.

    Kennt jemand eine Lösung?

    Google gibt da nicht viel her...

    Danke!
    Speario
    logisch das das nix wird wenn du mit mousedown und mouseup arbeitest.
    setzt button2.show() oder besser noch button2.visible=true in den click-event des button1.
    dann bleibt der button2 angezeigt auch wenn du die maustaste wieder los lässt.

    Wenn du aber willst, dass Button2 nur ausgelöst werden kann wenn button1 gedrückt ist könntest du z.b das button2.click event per code im button1.mousedown auslösen.

    Ansosnten wirds schwierig ohne WPF weil das Framework davon ausgeht, dass nur eine Maus vorhanden ist.
    Also es bringt natürlich gar nichts, das Button2.click Event per Code im Button1.mousedown auszulösen...
    Dann kann ich auch gleich den Code beim Drücken auf Button1 ausführen.

    Button2 soll "verriegelt" sein, solange Button1 nicht gedrückt wird.

    Die Funktion soll so ähnlich sein, wie man es beispielsweise von großen Pressen her kennt. Beide Taster sind räumlich getrennt, damit sie nicht einhändig bedient werden können. Nur wenn beide Taster betätigt sind, bewegt sich die Presse. So ist sichergestellt, dass beide Hände an den Tastern und nicht irgendwo im gefahrbringenden Bereich sind. Ein versehentliches Auslösen ist nahezu ausgeschlossen.

    Wenn das Framework nur mit einer Mausposition klarkommt, hab ich keine Chance.
    bei Pressen ist der Schaltkreis auch einfach zu realisieren. Einfach 2 Taster und ein Trennrelais fertig ist die Laube. Aber wie gesagt, dass Framework kann eigentlich nur mit einem Mauszeiger umgehen. Also musst du was andres versuchen. Z.B wenn du den Button1 10sec gedrückt hälts wird Button2.click ausgelöst oder im Mousedown-Event von Button1 lässst du Button2 wieder anzeigen. Dann könntest Du mit dem KeyPress-Event arbeiten und bei Drücken von Enter während die Maustaste gedückt bleibt Button2.Click auslösen.
    Das ist dann aber extreme Spielerei und ob der Compiler das dann frisst ist die nächste frage.
    Aber das einfachste ist der Zeitstempel. Wenn also 10sec Button1 gedrückt wird dann wird durch den Timer Button2.Click ausgelöst.
    Touchunterstützung ist wie bei fast allem anderen in WPF implementiert.
    Winforms ist uralt, also was erwartest du? Das Zeug ist so gut wie vor vielen Jahren(also nicht schlecht) aber es gibt nun mal jetzt wesentlich neuere Technologien wo folglich auch auf die neuen Trends eingehen.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Danke für die Tipps...

    Habe die Sache jetzt folgendermaßen gelöst (falls mal jemand ein ähnliches Problem hat...) :

    Habe meinem Projekt ein WPF-Benutzersteuerelement hinzugefügt und blende dieses mit Hilfe des WPF-Element-Hosts in meiner "normalen" Windows-Form ein.
    In dem WPF-Teil befinden sich die beiden Buttons, die eine Sub meiner eigentlichen Anwendung ausführen - Fertig...

    Im WPF-Teil benutze ich die TouchEnter und TouchUp-Events der Buttons. Diese werden auch nur durch Druck vom Touch ausgelöst, mit der Maus lässt sich da gar nichts machen (in meinem Fall erwünscht)...

    WPF scheint interessant zu sein, da tun sich ja ungeahnte Möglichkeiten auf... Und sieht auch noch ganz schick aus.

    Bisschen Offtopic : Wieso wird bei WPF ein Button mit

    VB.NET-Quellcode

    1. Button2.Visibility = True

    ausgeblendet und mit False wieder angezeigt. Von meinem Verständnis her sollte das genau anders herum sein...
  • 2 Benutzer haben hier geschrieben