2009-02-09 5 views
1

Я разрабатываю программу, которая получает все области Clearcase (в основном строки) & добавляет их в поле Combo. Я сравниваю существующую строку области четкой области в недавно добавленных элементах в поле со списком &, если она найдена, тогда я хочу ее выбрать, но поскольку ничего не выбрано в первый раз, выбранное значение равно null & selectedIndex = -1. , когда я присваиваю 0 выбранномуIndex, приходит ошибка -> объект не установлен в экземпляр объекта !! такая же проблема, когда вы присваиваете что-то выбранному элементу; дает ошибку.объект не установлен в экземпляр объекта !! ComboBox SelectedIndex SelectedItem

Что случилось с моим кодом?

private void PopulateClearCaseRegionComboBox () 
    { 
     clearCaseRegionComboBox.Items.Clear(); 

     foreach (Match token in RegularExpression.Match("\\w+", clearTool.CmdExec("lsregion"))) 
     { 
      clearCaseRegionComboBox.Items.Add(token.Value.Trim()); 
      if (clearCaseRegion.ToUpperInvariant() == token.Value.Trim().ToUpperInvariant()) 
      { 
       clearCaseRegionComboBox.SelectedIndex = clearCaseRegionComboBox.Items.IndexOf(token.Value.Trim()); 
      } 
     } 
     clearCaseRegionComboBox.Sorted = true; 
    } 

ответ

1

Вы уверены, что следующая строка вернет действительный индекс?

clearCaseRegionComboBox.Items.IndexOf (token.Value.Trim());

1

Метод Add возвращает индекс только что добавленного элемента. Вы можете использовать это значение внутри своего оператора if.

private void PopulateClearCaseRegionComboBox () 
{ 
    clearCaseRegionComboBox.Items.Clear(); 

    foreach (Match token in RegularExpression.Match("\\w+", clearTool.CmdExec("lsregion"))) 
    { 
     int index = clearCaseRegionComboBox.Items.Add(token.Value.Trim()); 
     if (clearCaseRegion.ToUpperInvariant() == token.Value.Trim().ToUpperInvariant()) 
     { 
      clearCaseRegionComboBox.SelectedIndex = index; 
     } 
    } 
    clearCaseRegionComboBox.Sorted = true; 
} 
1

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

Вы подключены к каким-либо событиям в поле со списком, которое присваивает переменной clearCaseRegionComboBox значение null?

2

Уведомление: событие SelectedIndexChanged также возникает, когда вы устанавливаете SelectedIndex или SelectedItem. Поэтому, если у вас есть что-то, проверьте также. :) Я потратил несколько часов на это, потому что вы не видите его во время отладки.

Смежные вопросы