如何将光标放在 C# 中 Datepicker 控件的第一个位置?
How to place cursor in the first position of a Datepicker control in C#?
我在 wpf 表单上有一个日期选择器控件(伪装成 00-00-0000)。如果日期选择器为空,那么无论我在日期选择器文本框的哪个位置单击,我都希望光标始终位于第一个位置。我尝试在 MouseDown 事件中使用 SelectionStart 属性(设置为 0),但没有成功。任何人都可以提出一个想法吗?如果您需要更多信息,请告诉我。任何帮助深表感谢。谢谢!
您应该找到 TextBox
元素并订阅事件 PreviewMouseUp
。
1) 添加 DatePicker
与 Loaded
事件:
<DatePicker Name="myDatePicker" Loaded="MyDatePicker_OnLoaded" />
2) 查找TextBox
元素(在DatePicker
文本框元素类型为DatePickerTextBox
)订阅PreviewMouseUp
:
private void MyDatePicker_OnLoaded(object sender, RoutedEventArgs e)
{
var tb = (DatePickerTextBox)myDatePicker.Template.FindName("PART_TextBox", myDatePicker);
if (tb != null)
{
tb.PreviewMouseUp += (s, args) =>
{
tb.CaretIndex = 0;
};
}
}
我在 wpf 表单上有一个日期选择器控件(伪装成 00-00-0000)。如果日期选择器为空,那么无论我在日期选择器文本框的哪个位置单击,我都希望光标始终位于第一个位置。我尝试在 MouseDown 事件中使用 SelectionStart 属性(设置为 0),但没有成功。任何人都可以提出一个想法吗?如果您需要更多信息,请告诉我。任何帮助深表感谢。谢谢!
您应该找到 TextBox
元素并订阅事件 PreviewMouseUp
。
1) 添加 DatePicker
与 Loaded
事件:
<DatePicker Name="myDatePicker" Loaded="MyDatePicker_OnLoaded" />
2) 查找TextBox
元素(在DatePicker
文本框元素类型为DatePickerTextBox
)订阅PreviewMouseUp
:
private void MyDatePicker_OnLoaded(object sender, RoutedEventArgs e)
{
var tb = (DatePickerTextBox)myDatePicker.Template.FindName("PART_TextBox", myDatePicker);
if (tb != null)
{
tb.PreviewMouseUp += (s, args) =>
{
tb.CaretIndex = 0;
};
}
}