只能用大写的文本框
本文关键字:文本 | 更新日期: 2023-09-27 17:50:27
我希望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++;
}
我遇到了同样的问题,并找到了解决方案。
步骤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);
}