面具编辑文本框焦点

时间:2013-06-26 14:21:54

标签: c# wpf

我正在使用掩码编辑TextBox。文本框始终显示0(零)。我无法从键盘输入任何键。我需要先删除零,然后我可以输入数字。因此,我在这里做了额外的步骤。我可以在键盘输入后立即打字吗?欢迎提出任何建议。

private void DateDay_GotFocus(object sender, RoutedEventArgs e)
{
    if (((TextBox)sender).Text == "Day")
        ((TextBox)sender).Text = string.Empty;
}

private void DateDay_LostFocus(object sender, RoutedEventArgs e)
{
    if (((TextBox)sender).Text == string.Empty)
        ((TextBox)sender).Text = "Day";
    else
        CheckForCorrectDateDay((TextBox)sender);
}

我尝试使用Focus事件但未成功:

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要在GotFocus事件的文本框中选择所有内容。对于MaskedTextBox控件,它在焦点事件触发后内部处理选择。因此,我们需要BeginInvoke之后调用SelectAll()

private void DateDay_GotFocus(object sender, RoutedEventArgs e)
{
        this.BeginInvoke((MethodInvoker)delegate() {
            ((TextBox)sender).SelectAll();
        });  
}

这样您就可以直接开始输入。 如果不允许null,则不能使文本为null。

WPF版本:

private void TextBox_GotFocus(object sender, RoutedEventArgs e) {
    this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate() {
        ((TextBox)sender).SelectAll();
    });
}

答案 1 :(得分:0)

使用Enter Event

为MaskedTextBox提供替代解决方案
    private void maskedEdit_Enter(object sender, EventArgs e)
    {
        MaskedTextBox maskedTextBox = (MaskedTextBox)sender;
        maskedTextBox.BeginInvoke
        (new Action
            (() =>
                {
                    maskedTextBox.SelectAll();
                }
            )
        );            
    }