1

我正在使用 Xceed MaskedTextBox;

<xctk:MaskedTextBox Mask="000-000-0000" x:Name="PhoneTextBox">
     <xctk:MaskedTextBox.Style>
       <xctk:MaskedTextBox.Style>
           <Style.Triggers>
              <MultiTrigger>
                 <MultiTrigger.Conditions>
                   <Condition Property="Text" Value="___-___-____"/>
                 </MultiTrigger.conditions>
              </MultiTrigger>
            </Style.Triggers>
       </xctk:MaskedTextBox.Style>

当我单击文本框输入数字时,它总是将光标定位在我单击的位置,而不是文本框的开头。这会导致用户开始输入数字并很快用完空间,因为如果他们在接近结尾处单击,他们可以输入更少的数字。

问:有没有办法点击框内的任意位置,让光标的起始位置在前面?

4

2 回答 2

1

像这样的东西应该适合你;在标记中:

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

在调用 Select 时,传递您希望光标所在位置的索引,具体取决于您的掩码。

于 2015-02-19T09:50:41.750 回答
0

接听加里赖特的答案。如何定位在 masktextbox 中的最后一个字符

int startPos = MaskTextbox1.MaskedTextProvider.FindUnassignedEditPositionFrom(MaskTextbox1.MaskedTextProvider.LastAssignedPosition + 1, true);
MaskTextbox1.Focus();
MaskTextbox1.Select(startPos, 0);
e.Handled = true;
于 2018-12-06T18:24:28.730 回答