我必须在visual studio 2015中创建一个C#程序,首先显示三个只读文本框,底部是绿色的,中间和顶部是灰色的。按Tab键时,中间的框应变为黄色,其他两个框应为灰色。然后再次按Tab键,顶部的框变为红色,底部的两个框变为灰色,并重复Tab键。我不能让方框改变颜色,除非我把它从只读中取下来,然后继续在方框中键入。如何修复代码以使用Tab键更改颜色?
//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();
}
发布于 2018-06-06 05:24:40
“我无法更改框的颜色,除非我将其从只读模式中取下,然后继续在框中键入。”
这是因为您正在使用TextChanged事件处理程序。如果要在按tab键后执行操作,则需要使用PreviewKeyDown事件处理程序:
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;
}
}
发布于 2018-06-06 05:29:53
要获得所需的效果,您需要响应Enter事件,而不是TextChange事件。
您的代码应该如下所示,如果文本框具有焦点,则在文本框之间使用Tab键将背景设置为黄色,如果没有焦点,则将背景设置为灰色:
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
https://stackoverflow.com/questions/50708977
复制相似问题