Изменить цвет фона кнопки при нажатии в приложении c Sharp Windows

Мне нужно изменить цвет фона кнопки сам по себе, это означает, что когда я нажму на кнопку, она должна изменить цвет фона, но когда я снова нажму на ту же кнопку, мне нужно вернуть цвет кнопки по умолчанию

Я пробовал этот метод события

private void slot_1(object sender, RoutedEventArgs e)
{
    //SlotLogic();
    slot1.Background = Brushes.Green;
}

private void slot_2(object sender, RoutedEventArgs e)
{
    //SlotLogic();
    slot2.Background = Brushes.Green;
}

Что происходит и чего вы ожидали?

EricSchaefer 14.12.2020 09:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
1 106
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

1 - Вы указали приложение Windows. Это как-то широко. Я полагаю, вы имеете в виду Windows Forms?

2 - Вы также не проверяете текущее состояние кнопки, поэтому я не уверен, как вы думаете, что двойное нажатие на одну и ту же кнопку будет иметь другой результат, поскольку вы выполняете одно и то же дважды slot1.Background = Brushes.Green;.

Формы Windows

private bool isSlot_1Clicked = false;
private void slot_Click(object sender, EventArgs e)
{
    if (isSlot_1Clicked)
        slot.BackColor = Color.Green;

    else
        slot.BackColor = Color.Red;

    isSlot_1Clicked = !isSlot_1Clicked;
}

Если вы хотите иметь логику переключения, вам нужно проверить текущее состояние, чтобы инвертировать его. Есть много способов сделать это, я решил сохранить его в отдельной переменной isSlot_1Clicked для простоты.

Вы также можете проверить цвет фона кнопки слота, или проверить свойство сложного объекта, или массив, и так далее.

Первые строки кода просто проверяют текущее состояние переменной и соответствующим образом изменяют фон кнопки. Последняя строка просто устанавливает переменную isSlot_1Clicked в значение, обратное ей, выполняя суть логики переключения.


Версия WPF

private Brush slot_1DefaultBackground = null;
private void Slot1_Click(object sender, RoutedEventArgs e)
{
    // store the default background value
    if (slot_1DefaultBackground == null)
        slot_1DefaultBackground = slot1.Background;


    // check the current background, and toggle accordingly
    if (slot1.Background != slot_1DefaultBackground)
        slot1.Background = slot_1DefaultBackground;

    else
        slot1.Background = Brushes.Green;
}

Эта версия сохраняет фон кнопки по умолчанию и сравнивает текущий фон с ним, чтобы выполнить логику переключения.

@AlaminSheikh рад, что смог помочь! добро пожаловать в сообщество

Vitox 15.12.2020 00:27

Другие вопросы по теме

Похожие вопросы

Как отправить сложный тип данных с помощью ajax в действие в контроллере в ASP.NET MVC
Как я могу обработать это исключение приведения в С#: system.data.model в system.windows.controls.CheckBox?
Использовать имя пользовательского элемента управления без префикса пространства имен
Запрос LINQ не соответствует проверке даты и времени
Строка не была распознана как допустимая дата и время при преобразовании стандартного арабского времени в дату и время
Создайте MemoryStream, который покрывает раздел массива байтов без копирования данных в памяти
Как отсортированные наборы для С# работают с пользовательскими объектами?
Роль Azure AD не отображается в токене аутентификации или идентификатора для гостевого пользователя
Как использовать WorksheetFunction.CountIf в С#?
С#, каков риск вызова асинхронного метода и никогда не ожидание возвращенной задачи или сохранение ссылок на указанную задачу