объект не установлен в экземпляр объекта !! ComboBox SelectedIndex SelectedItem - PullRequest
1 голос
/ 09 февраля 2009

Я разрабатываю программу, которая получает все регионы Clearcase (в основном строки) и добавляет их в поле со списком. Я сравниваю существующую строку региона в прозрачном регистре во вновь добавленных элементах в поле со списком и, если она найдена, я хочу выбрать ее, но поскольку ничего не выбирается в первый раз, selectedItem имеет значение null & selectedIndex = -1. когда я присваиваю 0 для 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;
    }

Ответы [ 4 ]

2 голосов
/ 22 октября 2012

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

1 голос
/ 09 февраля 2009

Метод 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 голос
/ 10 февраля 2009

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

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

1 голос
/ 09 февраля 2009

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

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

...