Coder
Coder

Reputation:

object not set to instance of an object!! ComboBox SelectedIndex SelectedItem

I am developing a program which gets all Clearcase regions (basically strings) & adds them to Combo box. I compare an existing clearcase region string in newly added items in combo box & if it is found then I want to select it, but because nothing is selected for the first time, selectedItem is null & selectedIndex = -1. when I assign 0 to selectedIndex, error comes --> object not set to instance of an object!! same problem when you assign something to selectedItem; gives an error.

whats wrong with my code?

    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;
    }

Upvotes: 1

Views: 1589

Answers (4)

bartles
bartles

Reputation: 21

A notification: the SelectedIndexChanged event also occurs when you set SelectedIndex or SelectedItem. So if you have something there, check it out also. :) I've passed several hours on it, because you don't see it while debugging.

Upvotes: 2

Scott Stevenson
Scott Stevenson

Reputation: 90

Perhaps you can reveal more of your code in context? I say this because it would seem impossible to get this error at this point in your representative code. You've already used the object to add an item 3 lines up.

Are you sinked to any events on the combo box that would assign the clearCaseRegionComboBox variable to null?

Upvotes: 1

Scott Stevenson
Scott Stevenson

Reputation: 90

The Add method returns the index of the newly added item. You can use that value inside your if statement.

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;
}

Upvotes: 1

Sandeep Datta
Sandeep Datta

Reputation: 29335

Are you sure the following line returns a valid index?

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

Upvotes: 1

Related Questions