WPF: MaskedTextBox + SetCaret
WPF: MaskedTextBox + SetCaret
所以我目前正在使用带有 MaskedTextBox 的 WPF Extended Toolkit,并将掩码设置为:
(000) 000-000
这是 phone 数字的格式。
我有一个问题,如果用户用鼠标单击选择文本框,插入符号会转到光标所在的位置(除非光标超出掩码范围,否则插入符号默认到末尾。
如果我在文本框中使用 Tab 键,它会将插入符设置在左括号之后,这正是我要查找的内容,但它与鼠标单击的行为方式不同。
我试过以下方法:
尝试用 mousedown、mouseup、ongotfocus 等覆盖实际的工具包文件。
protected override void OnMouseDown(MouseButtonEventArgs e)
{
this.Select(1,0);
base.OnMouseDown(e);
}
还尝试使用后面的代码在实际 MaskedTextBox 本身上设置事件。
我在网上找遍了,还是一无所获。
这应该适合你;在标记中:
<xctk:MaskedTextBox x:Name="MyMaskedTextBox" Mask="(000) 000-000" PreviewMouseDown="MyMaskedTextBox_PreviewMouseDown"></xctk:MaskedTextBox>
和事件处理程序:
private void MyMaskedTextBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
MyMaskedTextBox.Focus();
MyMaskedTextBox.Select(1, 0);
e.Handled = true;
}
所以我目前正在使用带有 MaskedTextBox 的 WPF Extended Toolkit,并将掩码设置为:
(000) 000-000
这是 phone 数字的格式。
我有一个问题,如果用户用鼠标单击选择文本框,插入符号会转到光标所在的位置(除非光标超出掩码范围,否则插入符号默认到末尾。
如果我在文本框中使用 Tab 键,它会将插入符设置在左括号之后,这正是我要查找的内容,但它与鼠标单击的行为方式不同。
我试过以下方法:
尝试用 mousedown、mouseup、ongotfocus 等覆盖实际的工具包文件。
protected override void OnMouseDown(MouseButtonEventArgs e)
{
this.Select(1,0);
base.OnMouseDown(e);
}
还尝试使用后面的代码在实际 MaskedTextBox 本身上设置事件。
我在网上找遍了,还是一无所获。
这应该适合你;在标记中:
<xctk:MaskedTextBox x:Name="MyMaskedTextBox" Mask="(000) 000-000" PreviewMouseDown="MyMaskedTextBox_PreviewMouseDown"></xctk:MaskedTextBox>
和事件处理程序:
private void MyMaskedTextBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
MyMaskedTextBox.Focus();
MyMaskedTextBox.Select(1, 0);
e.Handled = true;
}