0

我正在使用掩码编辑 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 事件但没有成功:

在此处输入图像描述

4

2 回答 2

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();
    });
}
于 2013-06-26T14:25:59.500 回答
0

使用 Enter 事件的 MaskedTextBox 的替代解决方案

    private void maskedEdit_Enter(object sender, EventArgs e)
    {
        MaskedTextBox maskedTextBox = (MaskedTextBox)sender;
        maskedTextBox.BeginInvoke
        (new Action
            (() =>
                {
                    maskedTextBox.SelectAll();
                }
            )
        );            
    }
于 2015-01-08T16:40:36.163 回答