TextBox只有大写

时间:2014-03-16 18:25:07

标签: c# windows-phone-7 windows-phone-8 windows-phone

我希望TextBox仅为大写。在Windows手机中,它没有CharacterCasing,只有我能想到的解决方案是:

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

每次用户按下不好的按键时,都会执行此过程。还有更好的方法吗?

4 个答案:

答案 0 :(得分: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 :(得分:1)

或者,您可以在文本框属性中将CharacterCasing设置为Upper

答案 2 :(得分:0)

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

第1步:创建TextBox ReadOnly。

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

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

完成!

答案 3 :(得分:0)

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

当文本框不活动时会触发简单的单词当你将TextBox留给任何其他东西时会发生

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