Добавление ресурса в конструктор разрывов форм, c# WinForms - PullRequest
0 голосов
/ 09 апреля 2020

Мой InitializeComponent метод:

ResourceManager rm = Resources.ResourceManager;
...
this.tsbAdd.Image = (Bitmap)rm.GetObject("add");

Программа в целом работает безупречно, но я не могу сейчас открыть дизайнер. Что странно, потому что я уверен, что это сработало раньше. В любом случае, это ошибка, которую я получаю сейчас:

The variable 'rm' is either undeclared or was never assigned. 

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

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Одним из возможных быстрых решений является очистка и последующее восстановление вашего решения.

На вкладке Build в Visual Stud ios или щелкните правой кнопкой мыши свое решение, показанное в обозревателе решений

  1. Чистый раствор
  2. Перестройте решение
  3. Перезапустите Visual Stud ios

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

1 голос
/ 09 апреля 2020

Проверка трассировки стека на наличие ошибки показывает, что Visual Studio Designer при отображении формы в режиме конструктора анализирует этот файл designer.cs построчно , а не выполняет его.

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

//ResourceManager rm = Resources.ResourceManager;
//...
this.tsbAdd.Image = (Bitmap)Resources.ResourceManager.GetObject("add");  

Добавление того же кода в конструктор формы тоже будет работать,

Я рекомендую переместить ваш код в конструктор формы, верно после вызова InitializeComponent ().

ResourceManager rm = Resources.ResourceManager;

public Form1()
{
    InitializeComponent();
    this.tsbAdd.Image = (Bitmap)rm.GetObject("add");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...