Mit F-Taste Sonderzeichen erstellen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RoulettePilot.

    Mit F-Taste Sonderzeichen erstellen

    Hallo Zusammen,

    ich möchte gerne, wenn der Cursor in einer TextBox steht und anschließend z.B. die F10 Taste gedrückt wird, dass z.B. ein Durchmesserzeichen eingefügt wird.
    Mit der Tastenkombination "Alt+157" kann ein Durchmesserzeichen eingefügt werden.

    Ich hätte es mal mit folgendem Code versucht, leider ohne Erfolg:

    Visual Basic-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. If e.KeyCode = Keys.F10 Then
    3. Me.KeyPreview = True
    4. SendKeys.SendWait("%" & Chr(157))
    5. End If
    6. End Sub


    Für eine Hilfe wäre ich sehr dankbar.
    Weil ich dachte es wäre die beste Funktion dafür. Das "A" wird jetzt in die TextBox geschrieben, wenn ich F10 drücke. Hatte keine Verbindung zur TextBox.

    Visual Basic-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
    2. If e.KeyCode = Keys.F10 Then
    3. Me.KeyPreview = True
    4. SendKeys.SendWait("A") '%" & Chr(157))
    5. End If
    6. End Sub


    Das Durchmesserzeichen wird mir leider mit folgendem Code nicht angezeigt:

    Visual Basic-Quellcode

    1. SendKeys.SendWait("%" & Chr(157))
    Warum nicht einfach so?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    3. If e.KeyCode = Keys.F10 Then
    4. TextBox1.Text = "Ø"
    5. End If
    6. End Sub
    7. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Damit wird mir der gesamte Inhalt der TextBox gelöscht und mit meinem vorherigen Versuch wird z.B. das "A" an der aktuellen Position des Cursors eingefügt.

    Gelöst:
    [Code=Vb] Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Firma1TextBox.KeyUp

    If e.KeyCode = Keys.F10 Then

    Me.KeyPreview = True

    SendKeys.SendWait("Ø")

    End If

    End Sub

    [Code]
    Die TextBox hat auch eine Insert-Funktion, falls Du die noch nicht kanntest. Mit der .SelectionStart-Property bekommst Du die aktuelle Cursor-Position. Es gibt absolut 0 Grund, hier mit SendKeys-Gedöns rumzumachen^^
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Falls noch keine der Lösungen bisher half.
    Evtl. dieses.
    Wichtig.. KeyPreview auf True... aber nicht wie oben im Code inerhalb der Anweisung, sondern vorher. Am besten im Designer markieren,
    Dann sollte dies recht einfach klappen:

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. Dim s As String = System.Text.Encoding.GetEncoding(850).GetString(New Byte() {157}) ' 157 = AscciCode für Durchmesser
    3. If e.KeyCode = Keys.F10 Then
    4. SendKeys.Send(s)
    5. End If
    6. End Sub