TextBox 只能大写

问题描述 投票:0回答:7

我希望

TextBox
只能大写。在Windows Phone中它没有
CharacterCasing
,我能想到的唯一解决方案是:

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

每次用户按下一个键时它都会执行这个过程,这是不好的。有更好的办法吗?

c# windows-phone-7 windows-phone-8 windows-phone
7个回答
18
投票

或者,您可以在文本框属性中将

CharacterCasing
设置为
Upper


3
投票

不幸的是,没有比跟踪更好的方法了

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
投票

我用这个

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

0
投票

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

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

第 2 步:捕获按下的任意键。

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

完成!


0
投票

您还可以使用文本框离开事件

当文本框未处于活动状态时,它会触发,简单来说,当您将 TextBox 留给任何其他事物时,它会发生

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

0
投票

你也可以试试这个,对我有用

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

        }

0
投票

组件中有一个名为“CharacterCasing”的属性,将其设置为“Upper”即可。

© www.soinside.com 2019 - 2024. All rights reserved.