C# 预览输出日期选择器中的Validade日期
我有一个日期选择器和一个PreviewtOutput事件的问题。 当长度为2(天)和4(月)时,我需要包含“/”数字 例如,输入到12之后,我需要包含“/”以保留“12/”,但如果我这样做,文本将重置并转到另一个日期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
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("/");
}
}