获取“方法'无重载'添加'需要2个参数”

时间:2018-03-07 16:05:58

标签: c# listbox

我有一个Windows窗体应用程序的功能,我正在检索文件夹中的文件列表,我正在删除每个文件名中包含的“部件号”。然后我添加了部件号和文件名到列表框。

使用代码时,一切正常。

lstProcessedParts.Items.Add(lsPartNumber);

如果我更改代码以添加列表框项的值,则会收到错误。

lstProcessedParts.Items.Add(lsPartNumber, lsFilename);

这是我的功能。

    public void LoadPartNumberList()
    {
        string lsFilename, lsPartNumber = "";
        int liPartNumberStartPosition, liPartNumberEndPosition, liPartNumberLength = 0;

        string[] files = Directory.GetFiles(txtFolderSelected.Text);
        foreach (string pathandfile in files)
        {
            lsFilename = Path.GetFileName(pathandfile);
            liPartNumberStartPosition = lsFilename.IndexOf("-") + 1;
            liPartNumberEndPosition = lsFilename.IndexOf("-", liPartNumberStartPosition + 5);
            liPartNumberLength = liPartNumberEndPosition - liPartNumberStartPosition;

            lsPartNumber = lsFilename.Substring(liPartNumberStartPosition, liPartNumberLength);

            lstProcessedParts.Items.Add(lsPartNumber, lsFilename);
        }
    }

任何人都可以帮我修改我的代码,这样有效吗?

1 个答案:

答案 0 :(得分:2)

我无法明确回答,因为我无法看到你的系统,但......

如果您的Items中需要不同的显示成员和值成员,则应将自定义类型的实例添加到列表中,并确保相应地配置显示和值成员。

所以,如果你有课程:

class ProcessedPart
{
    public string PartNumber {get; set;}
    public string FileName {get;set;}
}

现在您可以将ProcessedPart的实例添加到列表中:

lstProcessedParts.Items.Add(
    new ProcessedPart { 
        PartNumber = lsPartNumber, 
        FileName = lsFilename
    });

请务必配置列表

lstProcessedParts.DisplayMember = "PartNumber";
lstProcessedParts.ValueMember = "FileName";

......或者你需要它的方式