C# 文本框仅大写

C# 文本框仅大写,c#,windows-phone-7,windows-phone-8,windows-phone,C#,Windows Phone 7,Windows Phone 8,Windows Phone,我希望文本框仅为大写。在windows phone中,它没有字符框,我能想到的唯一解决方案是: private void textBox_TextChanged(object sender, TextChangedEventArgs e) { textBox.Text = textBox.Text.ToUpper(); } 每次用户按下不好的键时,它都会执行此过程。有更好的办法吗?我也遇到了同样的问题,找到了解决办法 步骤1:使文本框为只读 第2步:捕捉任何按下的键 检查我们想要的文本框

我希望
文本框
仅为大写。在windows phone中,它没有
字符框
,我能想到的唯一解决方案是:

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

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

我也遇到了同样的问题,找到了解决办法

步骤1:使文本框为只读

第2步:捕捉任何按下的键

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


完成了

我也遇到了同样的问题,找到了解决办法

步骤1:使文本框为只读

第2步:捕捉任何按下的键

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


完成了

或者,您可以在文本框属性中将
字符大小写设置为
上限

或者,您可以在文本框属性中将
字符大小写设置为
上限

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

它将在textbox未处于活动状态时触发,简单来说,它将在您将textbox留给任何其他对象时发生

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

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

它将在textbox未处于活动状态时触发,简单来说,它将在您将textbox留给任何其他对象时发生

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

不幸的是,没有比跟踪
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++;
}

不幸的是,没有比跟踪
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++;
}

这意味着更多的工作,因为用户可以在文本中的任何地方插入字符,我说你应该检查我们想要的文本框是否有焦点!这意味着更多的工作,因为用户可以在文本中的任何地方插入字符,我说你应该检查我们想要的文本框是否有焦点!也不可用:)也不可用:)不在windows 10 mobile中工作:(-每秒回信geoes到位置0+1不在windows 10 mobile中工作:(-每秒回信geoes到位置0+1