在 C# Windows 表单中通过单击鼠标或按 Tab 键突出显示文本框

Highlighting a textbox from a mouse click OR tab-key press in C# Windows Form

我想在我的表单上用黄色突出显示一个活动的文本框。我总共有 60 个文本框。因此我的想法是,当用户按下文本框时,背景颜色应该变为黄色,或者如果用户按下选项卡,无论它转到什么文本框,它也应该变为黄色。我有鼠标点击一个工作,但我无法让 Tab 键按下进入文本框工作。我真的需要进入文本框的 tab 键入口才能工作,因为我的 tab 索引完美排列,所以有一个自然的流程。 这是我当前的代码,用于通过鼠标单击所需的文本框(在事件 Enter 上)来突出显示文本框:

private void tbAll_Enter(object sender, EventArgs e)
{
    foreach (Control tb in this.Controls)
    {
        if (tb is TextBox)
        {
            if (tb.Focused == true)
            {
            ((TextBox)tb).BackColor = System.Drawing.Color.Yellow;
            }
        }
    }
}

但是,如果我按 Tab 键进入文本框,它不会突出显示为黄色,而是我刚刚离开的前一个字段会突出显示为黄色。有人知道这个问题的原因和解决方法吗?

使用 Enter and Leave 事件 - 将所有文本框挂接到 EnterLeave 的相同事件处理程序,并使用 Sender 参数将背景颜色更改为黄色/ 白色(取决于事件)。

像这样的事情应该让你开始:

private void TextBox_Enter(Object sender, EventArgs e) 
{
   ((TextBox)sender).BackColor = Color.Yellow;
}

private void TextBox_Leave(Object sender, EventArgs e) 
{
   ((TextBox)sender).BackColor = Color.White;
}

这样,无论用户是通过单击鼠标还是按下 Tab 键进入文本框都没有关系 - 只要文本框获得焦点,它就会获得黄色背景,而另一个控件一旦获得焦点,它就会获得黄色背景获得焦点,它会return变成白色