SelectAll() ведет себя по-разному между событиями MouseClick и Enter в C# 2015

Я пытаюсь выделить текст в каждом элементе управления по мере его ввода. Он отлично работает, когда я использую событие MouseClick. Но при использовании события Enter это не работает. Мне нужно использовать событие Enter вместо события MouseClick, потому что я хочу выделить текст независимо от того, как каждый элемент управления получает фокус. Я могу отлаживать событие Enter и видеть, что оно обрабатывается. Но по какой-то причине SelectAll() вообще не обрабатывается. Почему разное поведение?

// This works
private void ClientEdit_MouseClick(object sender, MouseEventArgs e)
{
    Control c = sender as Control;
    if (c is TextBox) (sender as TextBox).SelectAll();
    else if (c is MaskedTextBox) (sender as MaskedTextBox).SelectAll();
}

// This does not work
private void ClientEdit_Enter(object sender, EventArgs e)
{
    Control c = sender as Control;
    if (c is TextBox) (sender as TextBox).SelectAll();
    else if (c is MaskedTextBox) (sender as MaskedTextBox).SelectAll();
}

person itchibahn    schedule 18.03.2017    source источник


Ответы (1)


Я нашел сообщение @Jack-Fairfield около 2 лет назад, показанное ниже, и оно работает!

private void maskedTextBox1_Enter(object sender, EventArgs e)
{
    BeginInvoke((Action) delegate { SetMaskedTextBoxSelectAll((MaskedTextBox) sender); });
}

private void SetMaskedTextBoxSelectAll(MaskedTextBox txtbox)
{
    txtbox.SelectAll();
}

Я только начал здесь, и у меня недостаточно репутации, чтобы отдать ему должное. Спасибо.

person itchibahn    schedule 19.03.2017