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>

テキストボックスをクリックして数値を入力すると、テキストボックスの先頭ではなく、常にクリックした場所にカーソルが置かれます。これにより、ユーザーは数字の入力を開始し、すぐにスペースを使い果たします。これは、最後の近くをクリックすると入力する数字が少なくなるためです。

Q: ボックス内の任意の場所をクリックして、カーソルの開始位置を最前面にする方法はありますか?

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 に答える