只能用大写的文本框

本文关键字:文本 | 更新日期: 2023-09-27 17:50:27

我希望TextBox只大写。在windows phone中没有CharacterCasing,我能想到的唯一解决方案是:

private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
   textBox.Text = textBox.Text.ToUpper();
}

每次用户按下不合适的键时,它都会执行该过程。有没有更好的办法?

只能用大写的文本框

您也可以在文本框属性中设置CharacterCasingUpper

不幸的是,没有比跟踪TextChanged更好的方法了。然而,你的实现是有缺陷的,因为它没有考虑到用户可能改变插入符号位置的事实。

你应该这样写:

private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    TextBox currentContainer = ((TextBox)sender);
    int caretPosition = currentContainer.SelectionStart;
    currentContainer.Text = currentContainer.Text.ToUpper();
    currentContainer.SelectionStart = caretPosition++;
}

我遇到了同样的问题,并找到了解决方案。

步骤1:设置文本框为只读。

步骤2:捕捉任何按下的键。

检查我们想要的文本框是否有焦点。如果为true,则将该字符提交到文本框中,但要大写。

完成了!

也可以使用文本框leave事件

它会在文本框未激活时触发。简单来说,它会在你将文本框留给任何其他东西时发生

private void textBox_Leave(object sender, EventArgs e)
{
  textBox.Text = textBox.Text.ToUpper();
}

你也可以试试这个,它适合我

private void textBox_TextChanged(object sender, EventArgs e)
        {
            textBox.SelectionStart = textBox.Text.Length;
            textBox.Text = textBox.Text.ToUpper();
        }

我用这个

    private void txtCode_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.KeyChar = char.ToUpper(e.KeyChar);
    }