Arhn - архитектура программирования

добавление элементов в список

Я пытаюсь добавить некоторые элементы в поле со списком, как это показано на сайте msdn, но оно выдает мне исключение нулевой ссылки

 comboBox1.Items.Add("test");

Я пытаюсь изменить его на

ComboBox combobox1 = new ComboBox();
object test = new object();
test= "test";
comboBox1.Items.Add(test);

Но это тоже не работает Можете ли вы сказать мне, в чем проблема? Спасибо

РЕДАКТИРОВАТЬ: РЕШЕНО: проблема была в том, что я звонил

InitializeComponent();

после этого кода, а не раньше, теперь работает так, как хотелось бы раньше :)

14.06.2011

  • Нет, коллекция Items создается по запросу. 14.06.2011
  • В этом коде нет ничего плохого (кроме опечатки, где у вас есть comboBox1 вместо combobox1). Это приведет к ошибке времени компиляции. В вашем коде должно быть что-то еще, вызывающее ошибку. 14.06.2011
  • скорее всего, исключение исходит не из этого кода. закомментируйте эти строки и посмотрите, происходит ли это по-прежнему. если это исходит из этого кода, покажите нам полное исключение 14.06.2011
  • @keyboardP: Не обязательно. В первом примере OP ComboBox называется comboBox1. Бьюсь об заклад, это два отдельных объекта, оба действительные, но comboBox1 имеет значение null, что является причиной исходной ошибки. 14.06.2011
  • @ Эд С. Правда, ОП должен уточнить. Однако, даже если бы comboBox1 был отдельным объектом, почему было бы выброшено исключение NullReferenceException? Коллекцию Items не нужно создавать вручную перед назначением. Разве этот код не должен теоретически просто добавлять тестовый объект в comboBox1? 14.06.2011
  • хорошо, когда я изменяю его на comboBox1 - он добавляет элементы, но не показывает их, почему? 14.06.2011
  • @Martin Ch См. первую строку ответа Эда С. 14.06.2011
  • @Martin Ch - см. ответ Эда С. относительно контейнера. 14.06.2011

Ответы:


1

Заменить

ComboBox combobox1 = new ComboBox();
object test = new object();
test= "test";
combobox1.Items = new ArrayList();
combobox1.Items.Add(test);

combobox1 и comboBox1 не одно и то же

14.06.2011
  • Хотя это и правда, это приведет к ошибке времени компиляции, а не к NullReferenceException 14.06.2011
  • @keyboardP: Не обязательно. В первом примере OP ComboBox называется comboBox1. Бьюсь об заклад, это два отдельных объекта, оба действительные, но comboBox1 имеет значение null, что является причиной исходной ошибки. 14.06.2011
  • @ Эд С. Правда, ОП должен уточнить. Однако, даже если бы comboBox1 был отдельным объектом, почему было бы выброшено исключение NullReferenceException? Коллекцию Items не нужно создавать вручную перед назначением. Разве этот код не должен теоретически просто добавлять тестовый объект в comboBox1? 14.06.2011
  • @keyboardP: я не думаю, что это коллекция Items, я думаю, что comboBox1 на самом деле равно нулю. Почему? Понятия не имею, но, учитывая информацию, представленную ОП, я думаю, что это единственный логический вывод. 14.06.2011
  • @ Эд С. Это достаточно справедливо. Я просто хотел убедиться, что не упускаю чего-то очевидного относительно того, почему он нулевой :) 14.06.2011
  • @keyboardP: Ну, это много догадок, поскольку ОП не дает достаточно информации. Использование отладчика сделало бы проблему очевидной. 14.06.2011
  • @ Эд С. - Кажется, ты был прав. У ОП больше нет ошибки. Им просто нужно добавить его в контейнер, чтобы он был виден в соответствии с вашим ответом. 14.06.2011

  • 2

    В этом примере:

    ComboBox combobox1 = new ComboBox();
    object test = new object();
    test= "test";
    comboBox1.Items.Add(test);
    

    Ваш ComboBox не является дочерним элементом какого-либо контейнера (например, формы), поэтому он не будет отображаться в вашем пользовательском интерфейсе. Я предполагаю, что это то, что вы имели в виду под «не работает» в этом случае. Если вы создаете элемент управления в коде, вам нужно добавить его в свою форму или дочерний элемент вашей формы, например (при условии WinForms, а также в том, что код находится в вашем классе Form...)

    Controls.Add( combobox1 );
    

    Вам также нужно будет установить размер, положение и т. д.

    Коллекция Items для ComboBox не должна быть нулевой, поскольку она создается, когда вы ее вызываете, поэтому нам нужно будет увидеть, откуда берется combobox1. Когда вы имеете дело с простой проблемой, такой как NullReferenceException, вы должны использовать отладчик, чтобы узнать, какой объект является нулевым.

    РЕДАКТИРОВАТЬ: Как указал Манджур, combobox1 не совпадает с comboBox1, поскольку С# чувствителен к регистру (обратите внимание на заглавную B). Итак, из доказательств, которые вы нам предоставили, comboBox1 (заглавная Б) равно нулю.

    14.06.2011
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..