Die folgende Methode muss erfolgreich eine Benutzereingabe vornehmen und ihre Eingabe in Titelformat ändern, z. B. Großbuchstaben am Anfang jedes Worts, während sie eingegeben werden. Dies wird in ein Textfeld in einem WinForm-Projekt eingegeben. Ich habe ein Problem mit dieser Methode, da es richtig konvertiert, bis ich Caps sperren oder verschieben. Es wird auch funktionieren, wenn ich beide Tasten gedrückt halte, um nicht sicher zu sein, ob sich das einfach aufhebt. Ich habe Regex untersucht, aber nicht sicher, wie man es in dieser Klasse implementiert. Den Code für die Funktion finden Sie im Voraus.Konvertierung in TitleCase mit Feststelltaste & Shift gedrückt?
// User input stored in Temp Var
string myText = tbProductId.Text;
//
if (myText.Equals(null))
{
// validation, check if the user has entered anything, if Null.
MessageBox.Show("Please enter somthing");
}
else
{
// convert to Title Case
tbProductId.Text = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(tbProductId.Text);
tbProductId.Focus();
tbProductId.Select(tbProductId.Text.Length, 0);
//Move Cursor to location of where error was found
}
Es gibt mehrere Ansätze dazu. Zwei solche: Überwachen Sie ihre Eingabe auf Zeichen-für-Zeichen-Basis und konvertieren Sie Buchstaben in Groß- oder Kleinbuchstaben, je nachdem, ob es sich um das erste oder um ein Leerzeichen handelt. oder warte bis zum Ende und führe die ganze Kette durch einen [Konverter] (http://stackoverflow.com/questions/913090/how-to-capitali-the-first-character-of-each-word-or-the- first-of-a), um es in das richtige Format zu ändern. – Abion47
Sie könnten auch an der Klasse ['Keyboard'] (https://msdn.microsoft.com/en-us/library/system.windows.input.keyboard (v = vs.110) .aspx) interessiert sein. – Abion47
Der einfachste: 'tbProductId.Text = System.Threading.Thread.CurrentThread.CurrentCulture.TextInf o.ToTitleCase (tbProd uctId.Text.ToLower());'. Es konvertiert zuerst alles in Kleinbuchstaben und gibt dann den Titel als Ergebnis zurück. –