gpt4 book ai didi

c# - 将列表分配给列表框时,对象引用未设置为对象异常的实例

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:50 25 4
gpt4 key购买 nike

我编写了以下方法来加载一个列表框,其中包含尚未加载的值,但在分配以下内容时,我得到一个对象引用未设置为对象异常的实例。任何信息都有帮助。谢谢。

lbxCabinetName.Items.Add(cabinetsCurrentNotUsed[i].ToString());

// Defined outside a method
List<string> cabinetsCurrentNotUsed;

// Set value in the constructor
cabinetsCurrentNotUsed = new List<string>();

这是整个过程。

    private void selectCabinetToAdd()
{

// Loop through all server and form cabinet types to see if there are matches
for (int x = 0; x < opticalFile.serverCabinetNames.Count; x++)
{
bool cabinetExists = false;
for (int i = 0; i < opticalFile.CabinetValues.Count; i++)
{
if (opticalFile.serverCabinetNames[x].ToString() == opticalFile.CabinetValues[i].ToString())
{
cabinetExists = true;
}
}
// Add cabinets not used to cabinetsCurrentNotUsed List
if (!cabinetExists)
{
cabinetsCurrentNotUsed.Add(opticalFile.serverCabinetNames[x].ToString());
}
}

// Send cabinetsCurrentNotUsed List to list box
for (int i = 0; i < cabinetsCurrentNotUsed.Count; i++)
{
lbxCabinetName.Items.Add(cabinetsCurrentNotUsed[i].ToString());
}
}

最佳答案

您正在尝试向列表框添加一个空值。

代替了

for (int i = 0; i < cabinetsCurrentNotUsed.Count; i++)
{
lbxCabinetName.Items.Add(cabinetsCurrentNotUsed[i].ToString());
}

使用

foreach (string s in cabinetsCurrentNotUsed)
{
if(s != null)
lbxCabinetName.Items.Add(s);
}

注意

这部分与问题无关。但是在设置 cabinetExists = true; 后的内部 for 循环中,您可以跳出内部循环(如果满足至少一个条件,您可以确保 cabinetExists 为真。您不必检查对于内部循环中的其余项目)

编辑

private void selectCabinetToAdd()
{
foreach (string sc in serverCabinetNames)
{
bool cabinetExists = false;
foreach (string cv in CabinetValues)
{
if (sc == cv)
{
cabinetExists = true;
break;
}
}

if (!cabinetExists)
{
cabinetsCurrentNotUsed.Add(sc);
}

}

foreach (string ccnu in cabinetsCurrentNotUsed)
{
if (ccnu != null)
lbxCabinetName.Items.Add(ccnu);
}
}

此外,如果您的列表框可以为空,请确保在填充列表框之前先检查它。

if(lbxCabinetName != null)
{
selectCabinetToAdd();
}

编辑 2

动态添加控件

ListBox lbxCabinetName = new ListBox();
lbxCabinetName.Location = new System.Drawing.Point(10, 55);
lbxCabinetName.Size = new System.Drawing.Size(130, 95);
this.Controls.Add(lbxCabinetName);

关于c# - 将列表分配给列表框时,对象引用未设置为对象异常的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10695611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com