PreviewTextInput DatePicker中的验证日期

时间:2017-06-08 16:29:10

标签: c# validation datepicker

我有一个DatePicker和PreviewTextInput事件中的问题。 我需要包含" /"数字,长度为2天,4个月。

因此,在输入到12之后,我需要包含" /"保持" 12 /",但如果我这样做,文本重置并转到另一个日期。

private void dpDataEmissao_PreviewTextInput(object sender, TextCompositionEventArgs e)
    {
        if ((dpDataEmissao.Text + e.Text).Length == 2)
            dpDataEmissao.Text += e.Text + "/";

        if ((dpDataEmissao.Text + e.Text).Length == 4)
            dpDataEmissao.Text += e.Text + "/";
    }

最终结果必须是:" 12/04/2017"并且用户只需要输入" 12042017"和" /"将自动包含。

有人已经遇到这个问题吗?

1 个答案:

答案 0 :(得分:0)

使用TextBox:

您需要将e.Handled设置为true并调整光标的位置:

if ((dpDataEmissao.Text + e.Text).Length == 2)
{
   e.Handled = true;
   dpDataEmissao.Text += e.Text + "/";
}

if ((dpDataEmissao.Text + e.Text).Length == 5)
{
   e.Handled = true;
   dpDataEmissao.Text += e.Text + "/";
}

if (e.Handled)
{
   dpDataEmissao.CaretIndex = dpDataEmissao.Text.Length;
}

使用DatePicker :(不太好)

private void dpDataEmissao_KeyUp(object sender, KeyEventArgs e)
{
    if (new int[] { 2, 5 }.Contains(dpDataEmissao.Text.Length))
    {
        InputSimulator.SimulateTextEntry("/");
    }
}

InputSimulator是:Windows Input Simulator

的一部分

PS:

不要忘记将4改为5!