我正在开发一个程序,它获取所有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;
}
答案 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的组合框上的任何事件?