在Click事件上更改按钮的BackColor会导致悬停颜色更改

时间:2018-11-17 15:44:34

标签: c# button click backcolor

有一个问题,就是我有一组按钮应该像选项卡按钮那样工作。我首先将所有按钮的BackColors更改为适当的颜色,然后将被单击的按钮的BackColor更改为更亮的颜色。

编辑:按下Tab键是分配给每个按钮的Click事件的方法,即btnFile,btnEdit,btnView,btnDocket,btnWidgets和btnHelp

EDIT2:为澄清起见,这些不是作为选项卡控件一部分的实际选项卡按钮。它们是在工具箱中找到的常规按钮

private void tabPressed(object sender, EventArgs e)
    {
        Button tabButton = (Button)sender;
        btnFile.BackColor = btnEdit.BackColor = btnView.BackColor = btnDocket.BackColor = 
            btnWidgets.BackColor = btnHelp.BackColor = Color.FromArgb(1, 26, 29, 42);
        Console.WriteLine(tabButton.Text);
        switch(tabButton.Text)
        {
            case "File":
                btnFile.BackColor = Color.FromArgb(1, 39, 43, 62);
                break;
            case "Edit":
                btnEdit.BackColor = Color.FromArgb(1, 39, 43, 62);
                break;
            case "View":
                btnView.BackColor = Color.FromArgb(1, 39, 43, 62);
                break;
            case "Docket":
                btnDocket.BackColor = Color.FromArgb(1, 39, 43, 62);
                break;
            case "Widgets":
                btnWidgets.BackColor = Color.FromArgb(1, 39, 43, 62);
                break;
            case "Help":
                btnHelp.BackColor = Color.FromArgb(1, 39, 43, 62);
                break;
            default:
                break;
        }
    }

但是,完成此操作后,似乎仅更改了被单击按钮的悬停颜色,而其他按钮的悬停颜色通常是彩色的。

default

when clicked

not hovering

normal hover color 我不确定是什么原因造成的。我以为这可能是由于仅在悬停事件中更改了BackColor的事实,因为更改BackColor时它处于悬停的“状态”,但我不确定。

1 个答案:

答案 0 :(得分:0)

实际上,您的代码与click或hover事件无关,重要的是tabPressed方法将处理哪个事件。

您可以在设计时单击按钮并选择其事件,并确保为单击事件选择了tabPressed

要在运行时以编程方式执行此操作,请执行以下操作:

btnFile.Click += tabPressed;  

还请注意,您不需要switch-case,您可以将其简单地应用于事件的发送者(单击过的按钮):

private void tabPressed(object sender, EventArgs e)
{
   //your color rest codes here
   Button tabButton = (Button)sender;
   tabButton.BackColor = Color.FromArgb(1, 39, 43, 62);
}
相关问题