0

TextBox に関して質問があります。テキスト ボックスに入力すると、単語が自動的に変更されます。たとえば、「my name is kumar」を「My Name Is Kumar」に変更し、textBox1_TextChanged イベントで実行する必要があります。

現在、私はLeaveイベントでこれをやっています

private void textBox1_Leave(object sender, EventArgs e)
{
  textBox1.Text = textBox1.Text.Substring(0, 1).ToUpper() + textBox1.Text.Substring(1);
}

それを達成するのを手伝ってください。事前に感謝します。:)

4

4 に答える 4

7

TextInfo.ToTitleCase メソッドを使用する

private void textBox1_Leave(object sender, EventArgs e) 
{ 

    TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
    textBox1.Text = myTI.ToTitleCase(textBox1.Text)

}
于 2013-03-05T13:23:28.110 に答える
2

前の回答のフォローアップとして、本文の残りの部分に次の行を追加すると、正しい動作が維持されるようになります。

        textBox1.SelectionStart = textBox1.TextLength;
        textBox1.SelectionLength = 0;

したがって、完全な解決策は次のようになります。

private void textBox1_Leave(object sender, EventArgs e) 
{ 
        //Original from JW's answer
        TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
        textBox1.Text = myTI.ToTitleCase(textBox1.Text);
        //New lines to ensure the cursor is always at the end of the typed string.
        textBox1.SelectionStart = textBox1.TextLength;
        textBox1.SelectionLength = 0;
}
于 2013-03-05T13:41:54.690 に答える
2

これで問題が解決するはずです:

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        TextInfo myTI = new CultureInfo("en-US", false).TextInfo;
        textBox1.Text = myTI.ToTitleCase(textBox1.Text);
        textBox1.SelectionStart = textBox1.Text.Length;
    }
于 2013-03-05T13:42:45.563 に答える
1

実装が簡単で、大きな文字列を保持するとRegexは思わないため、ここでは a を使用します。TextBox書き込み時に文字列を自動修正する必要があるため、次のTextChangedイベントの代わりにイベントが必要ですLeave

private void textBox1_TextChanged(object sender, EventArgs e)
{
    Regex regex = new Regex(" [a-z]");
    foreach (Match match in regex.Matches(textBox1.Text))
        textBox1.Text = regex.Replace(textBox1.Text, match.Value.ToUpper());
}
于 2013-03-05T13:42:51.007 に答える