Wie kann ich gedrückten 'Dezimalpunkt' Schlüssel aus Numpad ersetzen, immer '.' unabhängig von regionalen Gegebenheiten. Ich will das funktioniert nur für eine (bestimmte) TextBox nicht alle in der Anwendung.
Es ist möglich, dies zu erreichen, ohne eigene Kontrolle zu erstellen?gedrückte Taste in TextBox zu einem anderen C ersetzen #
Antwort
Um dies zu tun, müssen Sie einfach das Ereignis KeyDown
behandeln, drücken Sie die aktivierte Taste, wenn es das NUMPAD-Dezimal ist, und dann senden Sie einfach den neuen Schlüssel, den Sie wollen.
Es ist ziemlich einfach, die folgenden Links sollten Sie genügend Hinweise geben, um tatsächlich einen Code zu schreiben:
Sobald Sie‘ geschrieben etwas, du kannst Stellen Sie eine neue Frage zu spezifischen Schwierigkeiten, die Ihnen begegnen könnten.
Betrachten Sie this.
Sie können KeyDown
Ereignis behandeln und wenn ist, auf Numpad Ereignis abbrechen und senden Sie neu mit '.'.
Dies ist eine mögliche Lösung (die meisten möglicherweise nicht die besten, aber eine, die funktionieren soll), die ein .
Zeichen in eine Textbox, wenn die Dezimaltaste auf dem Numpad gedrückt hinzufügen würde, wenn die ,
Taste noch gedrückt wird Fügt der Textbox das Zeichen ,
hinzu.
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Decimal)
{
e.SuppressKeyPress = true;
textBox1.Text += ".";
textBox1.SelectionStart = textBox1.Text.Length;
textBox1.SelectionLength = 0;
}
}
Die SuppressKeyPress
verhindert, dass die gedrückte Taste zu der Textbox gesendet wird. Dann fügen Sie dem Textfeld das gewünschte Zeichen hinzu. Die SelectionStart
und SelectionLength
Eigenschaften sind festgelegt, um den Cursor an das Ende der Zeichenfolge in dem Textfeld zu verschieben.
Hoffnung, die
EDIT hilft:
Wie cdkMoose wies darauf hin, den Fehler bei diesem Ansatz ist, dass der .
Charakter immer bis zum Ende des Strings hinzugefügt wird, wenn es erwünscht ist, fügen Sie das .
Zeichen irgendwo in der Zeichenkette ein, die der Code so verwendet werden könnte:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Decimal)
{
e.SuppressKeyPress = true;
var caretPosition = textBox1.SelectionStart;
textBox1.Text.Insert(caretPosition , ".");
textBox1.SelectionStart = caretPosition + 1;
textBox1.SelectionLength = 0;
}
}
Funktioniert nicht, wenn die Caret-Position nicht am Ende des Textes ist. Ich glaube, das gewünschte Ergebnis ist, eine Dezimalstelle unabhängig von der Position in der Textbox zu erzwingen – cdkMoose
@cdkMoose Danke für das Hinzeigen, nicht aber darüber, ich modifizierte die Antwort und jetzt sollte dieser Fall auch abgedeckt werden –
Sieht gut aus. Das sollte es abdecken. – cdkMoose
- 1. Lange gedrückte Taste
- 2. Android gedrückte Taste, beschleunigen zählen
- 3. Wie zuvor gedrückte Taste finden in Javascript
- 4. Erkannte gedrückte Taste für das aktuelle Sprachlayout C#
- 5. C# enable-Taste, wenn Textbox Daten hat
- 6. wpf müssen info von einem textbox zu einem anderen übertragen
- 7. wie die gedrückte Taste mit ihrem Kind in android Feuerbasis
- 8. Wie gedrückte Elemente in einem ListView hervorheben?
- 9. C# Verschieben von Daten von einem XAML zu einem anderen XAML in UWP
- 10. C#, TextBox '&' wechselt zu Amp;
- 11. Mindestdatum zu einem Textbox Typ einstellen = Datum in einem anderen Textfeld basierend auf einem Wert
- 12. Textbox und Taste nicht richtig
- 13. Handhabung der ENTER-Taste in TextBox, ASP.NET
- 14. Wie Textbox-Wert von einer Seite zu einem anderen übergeben?
- 15. Webformular: Update Textbox von einem anderen Thread
- 16. Scala Swing GUI reagiert nicht auf gedrückte Taste
- 17. Jede gedrückte Taste auf Listview Öffnung gedrückt und 5. Position
- 18. Ersetzen eines Zeichens mit einem anderen in einem String
- 19. awk Wert des Feldes zu ersetzen, basierend auf einem anderen
- 20. C# -Combox-Index zu TextBox-Liste
- 21. Schreiben in eine TextBox von einem anderen Thread?
- 22. Tabulator-Taste wird Umleitung nicht Textbox
- 23. wie gedrückte taste von 2d array von tasten in ontouchlistener zu erkennen
- 24. Ersetzen der Twitter-Taste
- 25. Javascript: Wie überprüfe ich, ob die auf einem Formularfeld gedrückte Taste eine Ziffer (0 - 9) ist?
- 26. C#: Textbox LostFocus Ereignisbehandlung
- 27. Python Curses: Make Enter-Taste Textbox beenden?
- 28. Mit C# -Code zu simulieren Textbox füllen und drücken der Taste
- 29. Schreibgeschützte Textbox in C#
- 30. ersetzen Wert in Datenrahmen basierend auf einem anderen Datenrahmen
Haben Sie irgendwas versucht? Eine Option wäre das Einfügen eines 'KeyPressed'-Ereignisses in die' Textbox', wo Sie die Taste, die gedrückt wurde, überprüfen und im Fall des Dezimalpunkts eine Aktion ausführen, die das '.' Zeichen in das Textfeld anstelle von ','. –
Welche Bedeutung der regionalen Einstellung? –
@BojanB Ich habe KeyDown, KeyUp, KeyPressed versucht. Für KeyDown, KeyUp können Sie den Charakter nicht ändern. In KeyPressed können Sie nicht bestimmen, Zeichen "," ging von Numpad oder Alfakeys – siwydym67