C#文本框自动大写锁定打开

C#文本框自动大写锁定打开,c#,key,capslock,toupper,tolower,C#,Key,Capslock,Toupper,Tolower,我需要以下代码:当我按下shift键时,我会在文本框中写小写字母,在其他情况下,我会写大写字母,比如“反转”或一直按下的大写锁定键。 因此,此代码和其他类似代码是无助的,因为只有一种字母大小: textBox1.CharacterCasing = CharacterCasing.Upper; textBox1.CharacterCasing = CharacterCasing.Lower; 谢谢你的帮助 最简单的选择是在TextChanged事件方法中更改文本。输入字符后,更改其布局。但您必须

我需要以下代码:当我按下shift键时,我会在文本框中写小写字母,在其他情况下,我会写大写字母,比如“反转”或一直按下的大写锁定键。 因此,此代码和其他类似代码是无助的,因为只有一种字母大小:

textBox1.CharacterCasing = CharacterCasing.Upper;
textBox1.CharacterCasing = CharacterCasing.Lower;

谢谢你的帮助

最简单的选择是在
TextChanged
事件方法中更改文本。输入字符后,更改其布局。但您必须记住,文本可以粘贴/剪切

如果忽略此问题,可以使用以下简单示例:

public partial class Form1 : Form
{
    int last_len = 0;
    bool char_to_lower = false;
    public Form1()
    {
        InitializeComponent();
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        // save last cursor position
        var select_index = textBox1.SelectionStart;
        // if text not delete - change char casing
        if (textBox1.Text.Length > last_len && select_index > 0)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(textBox1.Text.Take(select_index - 1).ToArray());

            // check SHIFT and CAPS
            if (char_to_lower || Control.IsKeyLocked(Keys.CapsLock))
                sb.Append(textBox1.Text[select_index - 1].ToString().ToLower());
            else
                sb.Append(textBox1.Text[select_index - 1].ToString().ToUpper());

            sb.Append(textBox1.Text.Skip(select_index).ToArray());

            // insert new text in textBox
            textBox1.Text = sb.ToString();
            // return cursor position
            textBox1.SelectionStart = select_index;
        }
        // save last length
        last_len = textBox1.Text.Length;
    }

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.ShiftKey || e.KeyCode == Keys.Shift) char_to_lower = true;
    }

    private void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.ShiftKey || e.KeyCode == Keys.Shift) char_to_lower = false;
    }
}

你为什么要创建一个用户界面来迷惑用户呢?可能是邮政编码@粘性位