Golden Basim Ответов: 2

Как использовать переменные в form.designer.cs


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

экс:-
this.gridView2.Appearance.SelectedRow.BackColor = ((System.Drawing.Color)(resources.GetObject("gridView2.Appearance.SelectedRow.BackColor")));

я хочу использовать :
this.gridView2.Appearance.SelectedRow.BackColor = projectColors.BackColor;


Что я уже пробовал:

я создаю класс для определения всех используемых цветов :
public static class ProjectColors
   {

       // gridcontrol



       // main color
       public static Color ChildFormBG = Color.FromArgb(248, 248, 248);

       public static Color PrimaryNormal = Color.FromArgb(48, 65, 75);
       public static Color PrimaryHover = Color.FromArgb(74, 97, 111);

       public static Color SecondryNormal = Color.FromArgb(19, 133, 214);
       public static Color SecondryHover = Color.FromArgb(60, 155, 222);


       // msgs
       public static Color ErrorNormal = Color.FromArgb(246, 86, 86);
       public static Color ErrorHover = Color.FromArgb(239, 49, 49);

       public static Color WarrningNormal = Color.FromArgb(255, 162, 52);
       public static Color WarrningHover = Color.FromArgb(248, 191, 51);

       public static Color SuccessNormal = Color.FromArgb(80, 184, 66);
       public static Color SuccessHover = Color.FromArgb(114, 195, 66);

       public static Color InfoNormal = Color.FromArgb(0, 174, 239);
       public static Color InfoHover = Color.FromArgb(0, 174, 239);

       public static Color NoteNormal = Color.FromArgb(248, 181, 51);
       public static Color NoteHover = Color.FromArgb(248, 181, 51);


       // form controls
       public static Color BorderNormal = Color.FromArgb(224, 224, 224);
       public static Color BorderFocused = Color.Silver;

       // buttons

   }


но когда я пробую переменную в форме.Designer.cs

this.gridView2.Appearance.SelectedRow.BackColor = projectColors.BackColor;


он автоматически изменился на :
this.gridView2.Appearance.SelectedRow.BackColor = ((System.Drawing.Color)(resources.GetObject("gridView2.Appearance.SelectedRow.BackColor")));


и иногда форма не может быть загружена.

есть еще какие-нибудь предложения?

2 Ответов

Рейтинг:
2

OriginalGriff

Если вы посмотрите внимательно, то увидите текст:

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
Вы не должны изменять файл designer.cs вручную - и если вы это сделаете, ожидайте ошибок "Эта форма не может быть загружена".

Вместо этого создайте новую форму, производную от формы:
public partial class SkinnedForm : Form
   {
   ...
   }
И поместите ваши изменения цвета в конструктор этого класса.
Затем выведите все ваши другие формы из SkinnedForm, а не непосредственно из класса Form.

Таким образом, все формы будут содержать все, что от формы, плюс ваш цветовой код автоматически.

В идеале skinnedform был бы abstract класс, но VS designer не может справиться с этим хорошо, поэтому просто убедитесь, что вы не создаете его самостоятельно.


Рейтинг:
16

phil.o

Вы вообще не должны касаться файла Form.Designer.cs. Он автоматически генерируется дизайнером, и любая настройка, которую вы делаете в нем, вероятно, будет потеряна в следующий раз, когда дизайнер сохранит его.

Что вы можете сделать, так это создать метод в файле Form.cs, имеющий дело со всеми вашими настройками; и вызвать этот метод из конструктора сразу после вызова InitializeComponent().

public class MyForm : Form
{
   public MyForm()
   {
      InitializeComponent();
      ApplyTemplate();
   }

   private void ApplyTemplate()
   {
      this.gridView2.Appearance.SelectedRow.BackColor = ProjectColors.BackColor;
      // etc.
   }
}


Golden Basim

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

Dave Kreskowiak

Тут уж ничего не поделаешь.

Любые изменения, внесенные в форму, приведут к тому, что конструктор восстановит код в файле form.designer.cs, и вы потеряете все свои изменения.