对象未设置为对象的实例!! ComboBox SelectedIndex SelectedItem

时间:2009-02-09 15:13:27

标签: combobox clearcase selecteditem selectedindex

我正在开发一个程序,它获取所有Clearcase区域(基本上是字符串)&将它们添加到组合框中。我比较了组合框中新添加的项目中现有的clearcase区域字符串。如果它被找到然后我想选择它,但因为第一次没有选择任何东西,selectedItem是null& selectedIndex = -1。 当我为selectedIndex指定0时,出现错误 - >对象未设置为对象的实例!!将内容分配给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 个答案:

答案 0 :(得分:2)

通知:当您设置SelectedIndex或SelectedItem时,也会发生SelectedIndexChanged事件。所以,如果你有什么东西,也请查看。 :)我已经花了好几个小时,因为你在调试时没有看到它。

答案 1 :(得分:1)

您确定以下行返回有效索引吗?

  

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

答案 2 :(得分: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;
}

答案 3 :(得分:1)

也许您可以在上下文中显示更多代码?我这样说是因为在您的代表性代码中此时似乎无法得到此错误。您已经使用该对象添加了3行的项目。

您是否接受了将clearCaseRegionComboBox变量赋值为null的组合框上的任何事件?