Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获得;方法'没有重载;添加';接受2个参数“;_C#_Listbox - Fatal编程技术网

C# 获得;方法'没有重载;添加';接受2个参数“;

C# 获得;方法'没有重载;添加';接受2个参数“;,c#,listbox,C#,Listbox,我有一个用于Windows窗体应用程序的函数,在该函数中,我检索文件夹中的文件列表,并剥离每个文件名中包含的“部件号”。然后,我将部件号和文件名添加到列表框中 当我使用代码时,一切正常 lstProcessedParts.Items.Add(lsPartNumber); 如果更改代码以添加listbox项的值,则会出现错误 lstProcessedParts.Items.Add(lsPartNumber, lsFilename); 这是我的功能 public void LoadPar

我有一个用于Windows窗体应用程序的函数,在该函数中,我检索文件夹中的文件列表,并剥离每个文件名中包含的“部件号”。然后,我将部件号和文件名添加到列表框中

当我使用代码时,一切正常

lstProcessedParts.Items.Add(lsPartNumber);
如果更改代码以添加listbox项的值,则会出现错误

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

有人能帮我修复代码,使其正常工作吗?

我不能肯定地回答,因为我看不清您的系统,但是

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

所以,如果你有课:

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

…或者您需要它的任何方式

方法都有您必须遵守的特定签名。
Add()
接受一个参数。您希望代码添加两个项目,还是一个具有这些属性的项目?@Jerodev,这不是重复的。首先,您引用的问题没有对我有帮助的答案,并且标记为正确的答案实际上是错误的……”方法列表框。items.add()获取一个对象msdn.microsoft.com/en us/library/…ListBoxItem似乎仅作为wpf控件存在。由于问题是关于winforms的,我假设您上面的方法仅对wpf列表框有效。?“谢谢@Crowcoder。我不知道该方法只接受一个参数。错误告诉我这很混乱”该方法接受两个参数“。你能建议我在我创建的函数中将文本和值添加到我的列表框中吗?谢谢@elgonzo,我以后一定要使用列表框值。我可以把lsPartNumber+lsFilename都作为文本,然后去掉lsFilename,但从用户的视觉角度看,这看起来不太好,我只想让他们看到列表中的零件号。我不明白为什么我不能轻松地添加一个带有文本和值的列表项,因为我创建了一个函数。嘿,这很有效!!令人惊叹的谢谢@Crowcoder!我从来没有想过这样做。