От новичка до гуру: Курсы программирования на CyberDuff

Переменная либо не объявлена, либо никогда не присваивалась, и перестроение не работает.

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

Form1.Designer.cs

private void InitializeComponent()
{
...
this.ComboBox_Target_0.Items.AddRange(Ranks);
...
}

сам массив объявляется так:

string[] Ranks = { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" };

Если я создам свое решение, форма будет работать нормально, а в поле со списком есть все перечисленные элементы, и все работает нормально. Однако дизайнер формы отказывается начинать, говоря: «Переменная Ranks либо не объявлена, либо никогда не назначалась».

Я видел другие вопросы об этой же проблеме и уже пробовал их (единственное) решение - перестроить решение, закрыть VS и снова открыть его. Но это не помогло. Я пытался поместить массив строк в «InitializeComponent()» и «public Form1()», каждый раз перестраивая и т. д. Однако это не исправилось для меня.

Позвольте мне просто проверить - выбор «Игнорировать и продолжить» в этом случае ничего не поставит под угрозу, верно?


  • Какая это версия Visual Studio? 02.04.2016

Ответы:


1

Я согласен с тем, что вам не следует изменять файл конструктора. Если по какой-то причине вам нужны эти значения, доступные во время разработки, и вы не хотите использовать редактор, единственный способ заставить его работать без ошибок — поместить это в самый верх метода InitializeComponent:

string[] Ranks = new string[] { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" };

Я добавил new string[] в объявление. Это основано на том, как редактор будет создавать список во время разработки:

this.ComboBox_Target_0.Items.AddRange(new object[] {...

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

this.ComboBox_Target_0.Items.AddRange(Ranks);

Если вам нужны только значения во время выполнения, лучше сделать это так (или его вариант):

public partial class Form1 : Form
{
    string[] Ranks = { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" };

    public Form1()
    {
        InitializeComponent();
        this.ComboBox_Target_0.Items.AddRange(Ranks);
    }
}
01.04.2016
  • Спасибо, это сработало! Я делаю это так, потому что на самом деле есть много выпадающих списков, в которых я хочу использовать одни и те же элементы, и я также хочу иметь возможность легко редактировать содержимое массива в будущем, если это будет необходимо. Я понятия не имею, что значит нужны только значения во время выполнения, а не нет. 02.04.2016
  • Это просто означает, что если вы просто проектируете форму (режим разработки) и вам не нужны значения до тех пор, пока приложение не будет запущено (среда выполнения), лучше использовать метод времени выполнения. Таким образом, вы не мешаете файлу конструктора. Вы по-прежнему можете заполнить несколько полей диапазоном. 02.04.2016
  • Новые материалы

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

    Представляем Narwhal Technologies (Nrwl)
    6 декабря 2016 г. Маунтин-Вью, Калифорния С тех пор, как Виктор Савкин и я (Джефф Кросс) присоединились к команде Angular в Google на заре Angular 1, Angular продемонстрировал феноменальный..

    Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
    Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

    5 простых концепций Python, ставших сложными
    #заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

    «Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
    Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..