Как сделать кнопки на C # forms серыми в зависимости от конкретного экземпляра

#c# #.net #windows #winforms

#c# #.net #Windows #winforms

Вопрос:

У меня есть этот метод, который проверяет, запущена ли служба, и кнопка, которая при нажатии инициализирует метод. Хотя есть ли способ сделать кнопку «серой», если сервис, например, не установлен. ?

 public static void StopService(string serviceName, int timeoutMilliseconds)
{
    ServiceController service = new ServiceController(serviceName);
    try
    {
        TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

        service.Stop();
        service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
        MessageBox.Show("The service was successfully turned on");
    }
    catch
    {
         MessageBox.Show("Service is not installed!");
    }
}

private void button14_Click_1(object sender, EventArgs e)
{
    StopService("Update Scheduler Service", 20000);
}
  

Комментарии:

1. Вы используете WinForms, верно? Следует добавить это в качестве тега (и, возможно, в текст вопроса). Причина, по которой я спрашиваю, заключается в том, что решение отличается в WPF. Кроме того, в вашем примере кода вы не должны перехватывать все исключения, только те исключения, которые точно сообщают вам, что служба не установлена. Вы должны позволить остальным провалиться, или записать их и повторно удалить, или записать их и проглотить. В противном случае вы скроете ошибки и выдадите неверные сообщения об ошибках.

2. Это правильно, я соответствующим образом обновил

3. Вы все еще не указали, используете ли вы Winforms или WPF.

Ответ №1:

Элементы управления WinForms имеют .Включено свойство, при котором при значении False элемент управления отображается серым цветом, как вы хотите. Я предполагаю, что WPF обладает той же функциональностью, но я никогда не использовал WPF, поэтому не могу сказать наверняка.

Комментарии:

1. Он обновил тег, чтобы указать WinForms. WPF немного отличается (я полагаю IsEnabled ), и вы хотели бы использовать для этого привязку данных / команды…