我在使用这段代码时遇到了问题。我希望它使文本框的第一个字母大写,但如果文本框为空,程序就会崩溃。我知道问题与子字符串的长度有关,所以如果有人能帮我解决这个问题那就太好了! 注意:文本框的名称是 richTextBoxGuess,每次文本框中的文本更改时都会运行此代码。
if (char.IsLower(Convert.ToChar(richTextBoxGuess.Text.Substring(0, 1))) ) // Checks if first letter is lower case
{
richTextBoxGuess.Text = richTextBoxGuess.Text.Replace(richTextBoxGuess.Text.Substring(0, 1), richTextBoxGuess.Text.ToUpper()); // Changes first letter to uppercase
richTextBoxGuess.SelectionStart = 2; // Puts cursor after first letter
}
最佳答案
这不会破坏内容之前的格式:
private void richTextBoxGuess _TextChanged(object sender, EventArgs e)
{
if (richTextBoxGuess .Text.Length <= 0) return;
string s = richTextBoxGuess.Text.Substring(0, 1);
if (s != s.ToUpper())
{
int curSelStart = richTextBoxGuess.SelectionStart;
int curSelLength = richTextBoxGuess.SelectionLength;
richTextBoxGuess.SelectionStart = 0;
richTextBoxGuess.SelectionLength = 1;
richTextBoxGuess.SelectedText = s.ToUpper();
richTextBoxGuess.SelectionStart = curSelStart;
richTextBoxGuess.SelectionLength = curSelLength;
}
}
请注意,它不会跟踪更改,也不会在您继续在前面添加时恢复它们。
如果您需要文化不变性,请使用 ToUpper()
的 CultureInfo.CurrentCulture
参数!
关于c# - 使文本框的第一个字母大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28612444/