Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 预览输出日期选择器中的Validade日期_C#_Validation_Datepicker - Fatal编程技术网

C# 预览输出日期选择器中的Validade日期

C# 预览输出日期选择器中的Validade日期,c#,validation,datepicker,C#,Validation,Datepicker,我有一个日期选择器和一个PreviewtOutput事件的问题。 当长度为2(天)和4(月)时,我需要包含“/”数字 例如,输入到12之后,我需要包含“/”以保留“12/”,但如果我这样做,文本将重置并转到另一个日期 private void dpDataEmissao_PreviewTextInput(object sender, TextCompositionEventArgs e) { if ((dpDataEmissao.Text + e.Text).Length

我有一个日期选择器和一个PreviewtOutput事件的问题。 当长度为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 + "/";
    }
最终结果必须为:“2017年4月12日”,用户只需输入“12042017”和“/”即可自动包含在内


有人已经遇到此问题了?

使用文本框:

您需要将
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;
}
使用日期选择器:(没那么好)

InputSimulator是以下各项的一部分:

PS:


别忘了把4换成5

你好!!谢谢你的帮助。我忘了提到我正在使用WPF Datepicker,而且我没有CaretIndex属性。无论如何,这也不起作用,在我设置text属性中的任何文本后,该值更改为DateTime。现在这是因为mscorelib.dll中存在System.FormatException。有关详细信息,您可以选中“异常设置”选项卡中的“公共运行时异常”复选框。
private void dpDataEmissao_KeyUp(object sender, KeyEventArgs e)
{
    if (new int[] { 2, 5 }.Contains(dpDataEmissao.Text.Length))
    {
        InputSimulator.SimulateTextEntry("/");
    }
}