0

为了在事件 args中获取TextBox's ,我应该订阅什么事件?Text

我试过PreviewTextInput了,但如果输入字符串是,例如,“122”。框的(见代码)文本没有点,但 eventArgs.Text 是“。” 输入字符串验证成功,TextBox.Text 为“122..”。我想要做的是通过调用验证输入字符串是否为十进制decimal.TryParse

private void OnPreviewTextInput(object sender, TextCompositionEventArgs eventArgs)
{
    var box = sender as TextBox;
    if (box == null) return;

    eventArgs.Handled = !ValidationUtils.IsValid(box.Text + eventArgs.Text);
}
4

1 回答 1

1

你可以尝试这样的事情:

private void OnPreviewTextInput(object sender, TextCompositionEventArgs e)
{
    var textBox = (TextBox)sender;
    var text = textBox.Text.Insert(textBox.CaretIndex, e.Text);
    decimal number;
    if (!decimal.TryParse(text, NumberStyles.Float, CultureInfo.InvariantCulture, out number))
    {
        e.Handled = true;
    }
}
于 2013-05-29T17:14:59.050 回答