事件通过事件的args采取控制的文本(Event to take control's tex

2019-10-30 07:16发布

什么是我要订阅,以获取事件TextBoxText在事件参数?

我试过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);
}

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


文章来源: Event to take control's text via event args