首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在按Tab键时更改文本框的BackColor

如何在按Tab键时更改文本框的BackColor
EN

Stack Overflow用户
提问于 2018-06-06 05:10:16
回答 2查看 1.2K关注 0票数 1

我必须在visual studio 2015中创建一个C#程序,首先显示三个只读文本框,底部是绿色的,中间和顶部是灰色的。按Tab键时,中间的框应变为黄色,其他两个框应为灰色。然后再次按Tab键,顶部的框变为红色,底部的两个框变为灰色,并重复Tab键。我不能让方框改变颜色,除非我把它从只读中取下来,然后继续在方框中键入。如何修复代码以使用Tab键更改颜色?

代码语言:javascript
复制
    //when the txtRed box is active, it turns red and the others go gray
    private void txtRed_TextChanged(object sender, EventArgs e)
    {
        txtRed.BackColor = System.Drawing.Color.Red;
        txtYellow.BackColor = System.Drawing.Color.DarkGray;
        txtGreen.BackColor = System.Drawing.Color.DarkGray;
    }

    //when the txtYellow box is active, it turns yellow and the others go gray
    private void txtYellow_TextChanged(object sender, EventArgs e)
    {
        txtRed.BackColor = System.Drawing.Color.DarkGray;
        txtYellow.BackColor = System.Drawing.Color.Yellow;
        txtGreen.BackColor = System.Drawing.Color.DarkGray;
    }

    //when the txtGreen box is active, it turns green and the others go gray
    private void txtGreen_TextChanged(object sender, EventArgs e)
    {
        txtRed.BackColor = System.Drawing.Color.DarkGray;
        txtYellow.BackColor = System.Drawing.Color.DarkGray;
        txtGreen.BackColor = System.Drawing.Color.Green;
    }

    //allows btnExit to terminate the program
    private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close();
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-06 05:24:40

“我无法更改框的颜色,除非我将其从只读模式中取下,然后继续在框中键入。”

这是因为您正在使用TextChanged事件处理程序。如果要在按tab键后执行操作,则需要使用PreviewKeyDown事件处理程序:

代码语言:javascript
复制
private void txtRed_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    if (e.KeyCode == Keys.Tab)
    {         
        txtRed.BackColor = System.Drawing.Color.Red;
        txtYellow.BackColor = System.Drawing.Color.DarkGray;
        txtGreen.BackColor = System.Drawing.Color.DarkGray;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-06 05:29:53

要获得所需的效果,您需要响应Enter事件,而不是TextChange事件。

您的代码应该如下所示,如果文本框具有焦点,则在文本框之间使用Tab键将背景设置为黄色,如果没有焦点,则将背景设置为灰色:

代码语言:javascript
复制
void txtRed_Enter(object sender, EventArgs e)
{
    txtRed.BackColor = Color.Yellow;
    txtYellow.BackColor = Color.Gray;
    txtGreen.BackColor = Color.Gray;
}
void txtYellow_Enter(object sender, EventArgs e)
{
    txtRed.BackColor = Color.Gray;
    txtYellow.BackColor = Color.Yellow;
    txtGreen.BackColor = Color.Gray;
}
void txtGreen_Enter(object sender, EventArgs e)
{
    txtRed.BackColor = Color.Gray;
    txtYellow.BackColor = Color.Gray;
    txtGreen.BackColor = Color.Yellow;
}

您可以在此处查看相关文档:Control.Enter Event

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50708977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档