我希望
TextBox
只能大写。在Windows Phone中它没有CharacterCasing
,我能想到的唯一解决方案是:
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
textBox.Text = textBox.Text.ToUpper();
}
每次用户按下一个键时它都会执行这个过程,这是不好的。有更好的办法吗?
或者,您可以在文本框属性中将
CharacterCasing
设置为 Upper
。
不幸的是,没有比跟踪更好的方法了
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++;
}
我用这个
private void txtCode_KeyPress(object sender, KeyPressEventArgs e)
{
e.KeyChar = char.ToUpper(e.KeyChar);
}
我遇到了同样的问题并找到了解决方案。
第 1 步:将文本框设置为只读。
第 2 步:捕获按下的任意键。
检查我们想要的文本框是否具有焦点。如果为 true,则将字符提交到文本框,但为大写。
完成!
您还可以使用文本框离开事件
当文本框未处于活动状态时,它会触发,简单来说,当您将 TextBox 留给任何其他事物时,它会发生
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();
}
组件中有一个名为“CharacterCasing”的属性,将其设置为“Upper”即可。