Ich habe ein textbox
und ein TextChanged
Ereignis damit, dass, wenn ein Benutzer etwas eingibt, ein Backslash automatisch am Ende des Textfelds hinzugefügt wird, wenn es nicht bereits eins gibt.Setze letzte mögliche Position von Textbox Caret
Das funktioniert gut, außer wenn der Benutzer den Cursor nach dem umgekehrten Schrägstrich und Typen an das Ende des Textfelds platziert, verschiebt es den umgekehrten Schrägstrich nach links, fügt den neuen Text und dann einen weiteren umgekehrten Schrägstrich am Ende.
Zum Beispiel gibt der Benutzer C
und C\
erscheint. Jetzt, wenn sie nach der \
klicken und a
eingeben, C\a\
erscheint, wenn was ich will, ist nur Ca\
.
Also brauche ich eine Möglichkeit, die letzte Position des Cursors im Textfeld vor dem umgekehrten Schrägstrich zu setzen, wenn der Benutzer versucht, es nach dem umgekehrten Schrägstrich zu setzen.
Hier ist der Code für das Textchanged-Ereignis:
private void batchRootFolderText_TextChanged(object sender, EventArgs e)
{
if (!batchRootFolderText.Text.EndsWith("\\"))
{
batchRootFolderText.Text = batchRootFolderText.Text + "\\";
}
}
Das ist ziemlich seltsames Verhalten oder 'TextBox', wenn Sie mich fragen. Kannst du erzählen, warum machst du das? Punkt ist, dass Sie einige Male später ändern können, wenn der Benutzer fertig ist (Fokus verloren oder drücken der Taste), nicht unbedingt nach jedem Textwechsel, während er noch nicht fertig ist. – Sinatr
Ja, es ist komisch, aber der Benutzer hat ausdrücklich darum gebeten, dass es jedes Mal passiert, wenn ein Text eingegeben wird. Es wäre besser, wenn ich es am Ende tun könnte, wenn sie endlich einen Knopf drücken, um diesen Text zu benutzen. – pfinferno