Zwischenspeicher per Tastatur einfügen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Pantsuu.

    Zwischenspeicher per Tastatur einfügen

    Hallo zusammen,

    nun habe ich schon eine ganz Weile mit VB.NET gearbeitet, aber mir war nie bewusst, das ich bsp. in Textfelder die Werte aus der Zwischenablage nur per Maus einfügen kann.
    Wie kann ich oder wo kann ich es definieren, das auch STRG+V funktioniert?

    Viele Grüße
    Marja

    Marja schrieb:

    das auch STRG+V funktioniert
    Es funktioniert einfach. Probiere es aus. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für Eure Antworten!

    Nun habe ich geschaut in die Eigenschaften der TextBox.
    Der Wert bei ShortcutsEnabled ist bei allen TextBoxen auf TRUE.
    Nun wundere ich mich aber gerade, warum es bei einer TextBox funktioniert und bei der anderen nicht?
    Die sind doch alle auf TRUE!?

    EDIT: Ich glaube ich weiß woran es liegt!

    VB.NET-Quellcode

    1. Private Sub txt_NiSt_SAP_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_NiSt_SAP.KeyPress
    2. If InStr("0123456789" & Chr(8), e.KeyChar) = False Then e.Handled = True
    3. End Sub

    Und zwar möchte ich nur Zahleneingaben erlauben! Ein Textfeld bei dem alles eingegeben werden kann, da funktioniert STRG+V.
    Wie aber kann ich in einer TextBox bei der nur Zahlen erlaubt sein sollen, dennoch mit STRG+V arbeiten, sofern der Inhalt des Zwischenspeichers ein Numerischen Wert hat?
    Marja

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

    Hallo Marja,
    eine ähnliche Frage hatten wir vor kurzem schon mal hier.

    Mein Ansatz in deinem Fall wäre dieser:

    VB.NET-Quellcode

    1. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    2. Dim filterList As New List(Of Char)
    3. filterList.AddRange("0123456789".ToCharArray)
    4. For Each c In TextBox1.Text.ToCharArray
    5. If Not filterList.Contains(c) Then
    6. TextBox1.Text = TextBox1.Text.Replace(c, "")
    7. End If
    8. Next
    9. TextBox1.Select(TextBox1.Text.Length, 0) ' Position auf ende setzen
    10. End Sub


    Um den Text vom Zwischenspeicher zu verhindern musst du mit .TextChanged der TextBox arbeiten.

    Gruß