我有一个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"和" /"将自动包含。
有人已经遇到这个问题吗?
答案 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!