我希望TextBox
仅为大写。在Windows手机中,它没有CharacterCasing
,只有我能想到的解决方案是:
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
textBox.Text = textBox.Text.ToUpper();
}
每次用户按下不好的按键时,都会执行此过程。还有更好的方法吗?
答案 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();
}