我想将输入到文本框中的所有字符更改为大写。该代码将添加字符,但是如何将插入符号向右移动?

private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
{
    textBox3.Text += e.KeyChar.ToString().ToUpper();
    e.Handled = true;
}

最佳答案

CharacterCasing TextBox 属性设置为Upper;那么您无需手动处理它。

请注意,即使输入的插入符号位于字符串的中间,textBox3.Text += e.KeyChar.ToString().ToUpper();也会将新字符追加到字符串的末尾(大多数用户会感到非常困惑)。出于同样的原因,我们不能假定输入的插入符号应在输入字符后出现在字符串的末尾。

如果您仍然真的想在代码中执行此操作,则应执行以下操作:

// needed for backspace and such to work
if (char.IsControl(e.KeyChar))
{
    return;
}
int selStart = textBox3.SelectionStart;
string before = textBox3.Text.Substring(0, selStart);
string after = textBox3.Text.Substring(before.Length);
textBox3.Text = string.Concat(before, e.KeyChar.ToString().ToUpper(), after);
textBox3.SelectionStart = before.Length + 1;
e.Handled = true;

关于c# - 如何将文本框插入符号向右移动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1177982/

10-11 23:44