Ошибка изменения текста метки C # - PullRequest
0 голосов
/ 18 декабря 2011

Моя программа перестает работать с этим предупреждением

Произошло необработанное исключение типа System.NullReferenceException в WindowsFormsApplication10.exe

Дополнительная информация: ссылка на объект не установлена ​​на экземпляр объект.

Вот код, где он останавливается:

string stripStatusL = "some text: " + keepValues[lastTaken].ToString();
                toolStripStatusLabel1.Text = stripStatusL;

Это просто StatusStrip с меткой. Я пытаюсь изменить текст этой метки. Обычно это работает для Label без StatusStrip. В чем моя ошибка?

Visual Studio 2010 C #

Ответы [ 5 ]

0 голосов
/ 18 декабря 2011
string[] keepValues=new string[5];
int lastTaken=6;

string temp=keepValues[lastTaken].ToString();

Это создаст исключение

An unhandled exception of type 'System.NullReferenceException' occurred in WindowsFormsApplication10.exe
Additional information: Object reference not set to an instance of an object.

Имейте в виду длину массива и индекса, который вы используете для доступа к значению из массива.

0 голосов
/ 18 декабря 2011

Моим лучшим предположением будет то, что keepValues - это null или что индекс / ключ lastTaken (ваш код не говорит, является ли он списком или словарем) не существует в коллекции. Обычная причина этого заключается в том, что дизайнер форм может не иметь возможности передавать внешние данные при инициализации. Формы имеют свойство DesignMode, которое имеет значение true, если форма запускается в конструкторе, который можно использовать для предоставления некоторых фиктивных данных при необходимости.

0 голосов
/ 18 декабря 2011

NullReferenceException означает, что экземпляр является нулевым.Получая доступ к пустому экземпляру, вы получаете исключение NullReferenceException.Убедитесь, что элемент управления не является нулевым.Просто установите точку останова на линии при наведении на нее, и вы увидите, что не так.

0 голосов
/ 18 декабря 2011
  1. коллекция keepValues не содержит ключ, равный lastTaken или
  2. keepValues[lastTaken] существует, но его значение равно нулю
0 голосов
/ 18 декабря 2011

Я думаю, keepValues[lastTaken] - ноль.

, поэтому keepValues[lastTaken].ToString(); выдаст исключение NullReferenceException.

Я бы предложил пройтись по программе с помощью отладчика и проверить, какой объект имеет значение null

...