SelectAll() 在 C# 2015 中的 MouseClick 和 Enter 事件之间表现不同

SelectAll() behaves differently between MouseClick and Enter events in 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();
}

我在大约 2 年前找到了@Jack-Fairfield 的 post,如下所示,它有效!

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

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

我刚开始在这里,没有足够的声誉来信任他。谢谢