簡體   English   中英

使文本框的第一個字母大寫

[英]Making first letter of a textbox upper case

我在使用此代碼時遇到問題。 我希望它使文本框的第一個字母大寫,但如果文本框為空,程序就會崩潰。 我知道問題與子字符串的長度有關,所以如果有人能幫我解決這個問題,那就太好了! 注意:文本框的名稱是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參數!

檢查 RichTextBoxGuess 是否為 null 或為空

if( richTextBoxGuess != ""){ // or different from null
     if (char.IsLower(Convert.ToChar(richTextBoxGuess.Text.Substring(0, 1))) ){
             //your code
     }
}

編寫這個擴展方法:

public static string CapitalizeFirstLetter(this string input)
{
    if (string.IsNullOrEmpty(input))
    {
        return input;
    }

    return input.Substring(0, 1).ToUpper(CultureInfo.CurrentCulture) + input.Substring(1);
}

然后將其用作

richTextBoxGuess.Text = richTextBoxGuess.Text.CapitalizeFirstLetter();
 private void _capitalizeFirstWord(Object sender, KeyPressEventArgs e)
        {
           if (_richTB.Text.Trim() == String.Empty)
            {
                e.KeyChar = char.ToUpper(e.KeyChar);
            }
        }

如果你想大寫每個單詞

char _pre,_cur;
_pre=' ';
 private void _capitalizeEveryWord(Object sender, KeyPressEventArgs e)
        {
           _cur = e.KeyChar;
           if (_richTB.Text.Trim() == String.Empty)
            {
                e.KeyChar = char.ToUpper(e.KeyChar);
            }
            e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == ' ' && (!(_cur == _pre)) || e.KeyChar == '.' &&                  (!(_pre == _cur)));
            _pre=_cur

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM