c# - 使文本框的第一个字母大写

标签 c#

我在使用这段代码时遇到了问题。我希望它使文本框的第一个字母大写,但如果文本框为空,程序就会崩溃。我知道问题与子字符串的长度有关,所以如果有人能帮我解决这个问题那就太好了! 注意:文本框的名称是 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/

相关文章:

c# - 如何以编程方式重命名Sharepoint目录(SPFolder或SPListItem)?

c# - mySQL .NET API - 从表中删除所有数据

c# - 无法在 Vista x64 中的 C# 应用程序中加载 C++ DLL

c# - 依赖注入(inject)和 AppSettings

c# - 查找邮政编码 10 英里范围内的商店?

c# - 从 DataView C# 中获取值(value)

c# - 在 C# 中从 FTP 服务器下载名称包含特殊字符的文件

c# - 文本更新未反射(reflect)在 WPF TextBlock 中 - 我错过了什么?

c# - 如何降低 aspnetcore 中 mvc 管道的日志级别?

c# - 为什么我不能在我自己的类中访问 UmbracoHelper