Изменение BackColor кнопки на событии Click вызывает изменение цвета при наведении - PullRequest
0 голосов
/ 17 ноября 2018

Существует проблема, когда у меня есть набор кнопок, которые должны действовать как кнопки вкладок.Сначала я изменяю BackColors всех кнопок на правильный цвет, а затем изменяю BackColor кнопки, на которую нажимают, на более яркий цвет.

РЕДАКТИРОВАТЬ: нажатие вкладки - это метод, назначенный событию 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 изменялся только для события hover, потому что он был в «состоянии» при наведении курсора, когда BackColor был изменен, но я не уверен.

1 Ответ

0 голосов
/ 17 ноября 2018

На самом деле ваш код не имеет никакого отношения к событию click или hover, важно, чтобы какой метод tabPressed обрабатывал событие.

вы можете во время разработки нажать на кнопку и выбрать ее события иубедитесь, что для события click выбрано 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...