C# 制作文本框大写字母的第一个字母
我的代码有问题。我希望它使文本框的第一个字母大写,但是如果文本框为空,程序就会崩溃。我知道问题与子字符串的长度有关,所以如果有人能帮我解决这个问题,那就太好了! 注意:文本框的名称是richTextBoxGuess,每次文本框中的文本更改时,此代码都会运行C# 制作文本框大写字母的第一个字母,c#,C#,我的代码有问题。我希望它使文本框的第一个字母大写,但是如果文本框为空,程序就会崩溃。我知道问题与子字符串的长度有关,所以如果有人能帮我解决这个问题,那就太好了! 注意:文本框的名称是richTextBoxGuess,每次文本框中的文本更改时,此代码都会运行 if (char.IsLower(Convert.ToChar(richTextBoxGuess.Text.Substring(0, 1))) ) // Checks if first letter is lower case { r
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
}
编写此扩展方法:
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();
编写此扩展方法:
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();
检查richTextBoxGuess是否为null或空
if( richTextBoxGuess != ""){ // or different from null
if (char.IsLower(Convert.ToChar(richTextBoxGuess.Text.Substring(0, 1))) ){
//your code
}
}
检查richTextBoxGuess是否为null或空
if( richTextBoxGuess != ""){ // or different from null
if (char.IsLower(Convert.ToChar(richTextBoxGuess.Text.Substring(0, 1))) ){
//your code
}
}
这不会破坏内容以前的格式:
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;
}
}
private void richTextBoxGuess\u TextChanged(对象发送方,事件参数e)
{
如果(richTextBoxGuess.Text.Length,则不会破坏内容的先前格式:
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;
}
}
private void richTextBoxGuess\u TextChanged(对象发送方,事件参数e)
{
if(richTextBoxGuess.Text.Length)
如果你想把每个词都大写
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
}
如果你想把每个词都大写
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
}
只需先检查文本框是否为空。if(richTextBoxGuess.text!=“”&&&…
可能是重复的哦,谢谢,这很有效。我对C#很陌生,所以我觉得有点愚蠢,因为这很明显!请注意,更改RTB的文本属性会破坏其格式!如果您使用的是TextBox
您不应该称它为richTextBoxGuess
,如果您使用的是RichTextBox
你不应该一直把它说成是一个TextBox
!只需先检查这个文本框是否为空。if(richTextBoxGuess.text!=“”&&&…
可能是重复的哦,谢谢,这很有效。我对C#很陌生,所以我觉得有点愚蠢,因为这很明显!请注意,更改RTB的文本属性会破坏其格式!如果您使用的是TextBox
您不应该称它为richTextBoxGuess
,如果您使用的是RichTextBox
你不应该一直把它说成是一个文本框
!仅供参考,第二个子字符串
可以使用只获取起始索引并到达字符串末尾的重载。请注意,更改RTB的Text属性将破坏其格式!仅供参考,第二个子字符串
可以使用只获取启动索引并转到字符串的结尾。请注意,更改RTB的文本属性将破坏其格式设置!请注意,更改RTB的文本属性将破坏其格式设置!请注意,更改RTB的文本属性将破坏其格式设置!