通过事件参数控制's文本

本文关键字:文本 控制 事件 参数 | 更新日期: 2023-09-27 18:15:59

为了在事件参数中获得TextBoxText,我应该订阅什么事件?

我试过PreviewTextInput,但如果输入字符串是,例如,"122"框的(见代码)文本是没有点,但eventArgs。文本为"。",输入字符串验证成功,然后输入文本框。文本是"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);
}

通过事件参数控制's文本

您可以尝试这样做:

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;
    }
}