已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
4天前关闭。
这篇文章是4天前编辑并提交审查的。
Improve this question
我使用xaml <TextBox/>
,其背后的代码包含名为 NumberValidationTextBox 的事件PreviewTextchanged
和名为 OnTextChanged 的事件TextChanged
:
public void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("^-?[0-9]*[\\.,]?[0-9]?[0-9]?$");
var futureText = $"{(sender as TextBox).Text}{e.Text}";
e.Handled = !regex.IsMatch(futureText);
}
private void OnTextChanged(object sender, TextChangedEventArgs e)
{
var myInput = sender as TextBox;
myInput.Text = myInput.Text.Replace(",", ".").Trim();
myInput.CaretIndex = myInput.Text.Length;
}
问题是当键入的数字是例如:123.23
,我通过单击和鼠标拖动选择数字,并尝试通过键入下一个数字来替换它-它不会改变,因为regex阻止了它。在这种情况下,只有Backspace是解决方案。所以我想改变TextBox填充时选择的testx。
以上所有细节和这里与ss链接:https://i.ibb.co/z7rPfpj/123.png
怎么修?谢谢。
1条答案
按热度按时间jjhzyzn01#
将您的方法
NumberValidationTextBox
替换为:测试SelectedText以检查是否选择了某些字符