#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
), и вы хотели бы использовать для этого привязку данных / команды…