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;            
}