То, как я могу создать перечисление для, раскрашивает приложение форм окна?

Я должен был проверить, был ли установлен git как часть развертывания нашего CI-сервера. Мой последний скрипт bash был следующим (сервер Ubuntu):

if ! builtin type -p git &>/dev/null; then
  sudo apt-get -y install git-core
fi

Надеюсь, что это поможет кому-то еще!

6
задан MPelletier 5 May 2012 в 13:42
поделиться

4 ответа

Я бы не сказал, что вам здесь нужно перечисление. Когда вы упомянули «цветовую схему», обычный способ сделать это - использовать полиморфизм, позволяющий использовать разные цветовые схемы.

Это означает, что у вас будет свой интерфейс, подобный этому:

   public interface IColorScheme
   {
        Color CompanyDarkBlue { get; }
        Color CompanyBlue { get; }
        Color CompanyLightBlue { get; }
   }

, а затем реализовать его любым удобным для вас способом. it:

   public class MyColorScheme : IColorScheme
   {
        public virtual Color CompanyDarkBlue
        { 
           get { return Color.FromArgB(0,56,147); }
        }

        public virtual Color CompanyBlue
        {
           get { return Color.FromArgB(0,56,147); }
        }

        // etc.
   }

Обратите внимание, что я также сделал эти свойства виртуальными, чтобы вы могли легко переопределить только определенные цвета, если вам нужна немного другая схема.

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

3
ответ дан 16 December 2019 в 21:45
поделиться

Вы можете использовать метод расширения. Сначала упростите перечисление:

enum ColorType
{
   CompanyDarkBlue,
   CompanyBlue,
   CompanyLightBlue
}

Метод расширения будет выглядеть примерно так:

public static class ColorTypeExtensions
{
   public static Color ToColor(this ColorType colorType)
   {
      switch(colorType)
      {
         case ColorType.CompanyDarkBlue: return Color.FromArgB(0,56,147);
         ...
      }
   }
}

Это позволит вам написать:

ColorType.CompanyDarkBlue.ToColor();

Для получения дополнительной информации см. C #: Улучшение перечислений с помощью методов расширения

3
ответ дан 16 December 2019 в 21:45
поделиться

Поместите эти цвета в отдельный класс и поместите их как свойства, а не как перечисление.

    public class myColor
{
    public static Color CompanyDarkBlue
    {
        get { return Color.FromArgb(0, 56, 147); }
    }

    public static Color CompanyBlue
    {
        get { return Color.FromArgb(0, 111, 198); }
    }

    public static Color CompanyLightBlue
    {
        get { return Color.FromArgb(0, 145, 201); }
    }
}
2
ответ дан 16 December 2019 в 21:45
поделиться

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

Не понимаю, зачем здесь вообще нужна нумерация

0
ответ дан 16 December 2019 в 21:45
поделиться
Другие вопросы по тегам:

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