[Grundlagen] [VB2010] Benötige eine kleine Hilfe bei den Maus events

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Basti.

    [Grundlagen] [VB2010] Benötige eine kleine Hilfe bei den Maus events

    Guten Abend liebe Community,
    bevor ich mein Problem erläutere, versuche ich euch zu erklären wofür ich mein Programm benötige vllt hat ja jemand einen alternativen lösungsvorschlag. Ich besitze ein Surface welches aufgrund eines Unfalls teilweise funktionseinschränkungen hat. Da jedoch der Stift noch super als eingabegerät funktioniert dachte ich es als eine Art grafiktablett zu nutzen. Da es leider keine Fertige Software gab und Programme zur Fernsteuerung immer den Bildschirm mit übertragen hab ich gedacht mir ein Programm zu schreiben welches die Position der Maus über TCP an den Rechner sendet wo der Client die "Nachricht" verarbeitet und die Maus bewegt. Aktuell bin ich dabei den Mausklick abzufangen, aber im Label (für testzwecke) wird immer "Links" angezeigt
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    3. ToolStripStatusLabel1.Text = Cursor.Position.X
    4. ToolStripStatusLabel2.Text = Cursor.Position.Y
    5. If MouseButtons.Left Then
    6. ToolStripStatusLabel3.Text = "Links"
    7. Else : ToolStripStatusLabel3.Text = ""
    8. End If
    9. End Sub
    10. End Class
    Wie gesagt, ich arbeite mich gerade Langsam an die Materie und das TCP Tutorial von Malischh Hab ich auch noch nich ganz zu 100% verstanden, aber erstmal sollte ja mein Teilcode funktionieren. Die Labels 1&2 Funktionieren einwandfrei, sowohl mit Maus, Touchpad und Stift.
    Ich hoffe ich hab nichts vergessen und würde mich über Hilfe freuen. Ab besten mit ausführlicher erklärung :)

    Danke
    Mfg
    Bastian
    PS: Warum kann man oben bei den Labels nich vb2010 auswählen?
    Spoiler anzeigen
    Option Strict Off
    Imports Microsoft.VisualBasic

    Public Class Form1

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    ToolStripStatusLabel1.Text = Cursor.Position.X
    ToolStripStatusLabel2.Text = Cursor.Position.Y

    If MouseButtons.Left Then
    ToolStripStatusLabel3.Text = "Links"
    End If
    If Not MouseButtons.Left Then
    ToolStripStatusLabel4.Text = "nicht links"
    End If
    End Sub

    Mein "Neuer" code. Der fehler muss bei mir liegen da Labels 3&4 beide eine Ausgabe haben...

    Die fehlermeldung die während das Programm läuft ausgegeben wird Lautet:
    Eine Ausnahme (erste Chance) des Typs "System.NullReferenceException" ist in Microsoft.VisualBasic.dll aufgetreten.

    Ich hab mal schnell gegoogelt und laut mycsharp.de/wbb2/thread.php?threadid=20478 muss ich einer Variablen ein Objekt zuweisen. Ich vermute mal das liet an meinem "Mousebuttons.Left", also das ich da was vergessen habe



    *EDIT: Wenn ich vor meine Mousebuttons das e mit dem Punkt setze was in einigen Beispielen ist kommt diese Meldung:
    Fehler 1&2 "MouseButtons" ist kein Member von "System.EventArgs".

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Basti“ ()

    ups sorry - du kannst das ja alles kaum wissen, so Forum-Gepflogenheiten und so.
    Also im Forum sind wir oft genug nicht sonderlich nett zueinander.

    Und wichtig ist halt, dass man aufeinander eingeht.
    Also wenn ich zu einer Eingabe von dir eine Antwort poste, dann hat die was mit deiner Eingabe zu tun, und wenn du dich drum kümmerst, rauszukriegen, was ich meine - oder einfach ausprobieren, was ich vorschlag, dann kommt man weiter.
    Wenn du aber auf meine Antwort mit einem gänzlich anderen Codesnippet fortfährst, gibst du mir das Gefühl, Selbstgespräche zu führen, und ausserdem führst du selbst dann auch Selbstgespräche.
    Also das ist ziemlich verzwickt, einem Faden zu folgen, und es ist aber gleichzeitig sehr nötig.

    So, nun haben wir hier fleißig rumgemeckert, und sind in glaub 8 posts nicht einen Schritt vorwärts gekommen.
    Hast du nun mal den Namespace rausgenommen, und Option Strict auf On voreingestellt?
    Im verlinkten Tut sind ja auch Videos enthalten - also es müsste wirklich machbar sein.

    Und das verursacht Fehler, aber es sind erwünschte Fehler. Genaugenommen sind es Fehlermeldungen, die dadurch erst sichtbar machen, welche Fehler schon vorher da waren.
    Ich hab leider aktuell nicht viel Zeit, aber ich hab es Mittlerweile geschafft das mit ein Label anzeigen kann ( mit MouseButtons.ToString funktioniert das, darau bin ich sogar von allein gekommen ), müsste aber bei gelegenheit mal testen was passiert wenn mehrere Mausbuttons gleichzeitig gedrückt sind.

    Die einzige fehlermeldung die bei Options Strict = on angezeigt werden sind bei "ToolStripStatusLabel1.Text = Cursor.Position.X" das"Fehler 1 "Option Strict On" lässt keine impliziten Konvertierungen von Integer in String zu. " Ich denk mal das Ich die Position der Maus nicht direkt verwenden kann aber das werd ich Morgen nach Feierabend alles erlernen und dann hierher schreiben faslls mal jmd das gleiche Problem hat oder so :) :)

    //EDIT:

    Habs durvch googeln gefunden. war Leichter als gedacht. Quelle: answers.yahoo.com/question/index?qid=20100403204846AAtbwLL


    Spoiler anzeigen
    ​Option Strict On

    Public Class Form1
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    ToolStripStatusLabel1.Text = Convert.ToString(Cursor.Position.X)
    ToolStripStatusLabel2.Text = Convert.ToString(Cursor.Position.Y)
    ToolStripStatusLabel3.Text = MouseButtons.ToString
    End Sub
    End Class

    Das ist mein Fehlermeldungsreier Quellcode, mein eigentliches Problem ist jetzt gelöst und ich mach mich dann mal an den TCP teil. Danach werd ich mir noch was ausdenken das die eingaben au dem Bildschirm auch richtig umgesetzt werden falls 2 Verschiedene Auflösungen verwendet werden.

    Option Strict on werd ich abjetztimmer verwenden.

    Danke.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Basti“ ()

    Hey Basti,..
    also schau das du wenigstens gleich bleibst, zweimal Convert.Tostring und dann plötzlich .Tostring?

    VB.NET-Quellcode

    1. ToolStripStatusLabel1.Text = Convert.ToString(Cursor.Position.X)
    2. ToolStripStatusLabel2.Text = Convert.ToString(Cursor.Position.Y)
    3. ToolStripStatusLabel3.Text = MouseButtons.ToString


    Mach es doch lieber so, dann hast du auch nur ein Label. (Außer du musst es in verschiedenen machen..~)

    VB.NET-Quellcode

    1. Label1.Text = "X: " & Cursor.Position.X.ToString & " " & "Y: " & _
    2. Cursor.Position.Y.ToString & " " & MouseButtons.ToString


    Google ist gut und schön, aber übernimm die Sachen nicht einfach so ^^

    Außerdem bietet dir VS fasst alles..
    Google ist nicht deine Mami

    Option Strict On!
    Ich hab das erstmal in 2 Labels gemacht da ich ursprünglich die x& Y Position einzeld senden wollte. (Kannte zu dem zeitpunkt keine möglichkeit die Maus zu bewegen über ein Programm aber Mittlerweile weiß ich das die Positionen eh direkt hintereinander im Quellcode erscheinen. Das "Convert" hab ich nur bei den 2 stellen verwendet da mit nur diese beiden Stellen Fehlermeldungen generiert haben.

    Ich hab das nich Blind kopiert, ich bin der meinung das auch zu verstehen was ich da tippe.