![在此输入图像描述][1]嗨,我正在尝试将两个文本框中的信息显示到两个单独的列表框中;一个显示艺术家名称,一个显示成员数量。目前,当我点击"添加艺术家"按钮时会发生这种情况:
因为你只能看到艺术家的名字,这是因为艺术家类中的这段代码:
是我的表单类中的代码,它将艺术家名称显示在listbox1中。
我试过listBox2.Items.Add(成员(;和listBox2.Items.Add(艺术家.会员(;然而,为了让它发挥作用,他们都找不到成员。我找到的唯一方法是使用以下代码,然而foreach随后会出现错误消息:
[在此输入图像描述][2]我真的不知道该何去何从,任何帮助都将不胜感激!(我已经插入了下面Artist类和Form类中的代码,以防有任何帮助(
您可能想要:
ArtistTree.InOrderListBox
返回List<Artist>
而不是List<string>
。这样你的循环:
foreach (Artist artist in ListBoxName)
{
listBox1.Items.Add(artist);
listBox2.Items.Add(artist.Members);
}
应该有效。
现在您遇到了一个错误,因为ListBoxName被声明为List<string>
,但您正试图对其进行迭代(使用foreach(,并表示列表中的每个项目都是艺术家,并且您之前在声明中说过列表中每个元素的类型都是字符串
List<string> ListBoxName = new List<string>();
因此,你会得到一个编译错误,因为你没有从Artist到字符串的转换,也就是说,你不能做:
Artist a = new Artist();
string castMe = (string) a;
调用ToString((与强制转换不同。
HTH,Nathan
修改ArtistTree.InOrderListBox
方法,使其返回(或填充(Artist
s列表,而不是字符串(Artist.Name
(。此外,该方法的参数不需要b为ref
参数。正常的按值参数可以完成这项工作,因为该方法不需要更改参数本身,而是更改参数的内容。
List<Artist> artistSorted = new List<Artist>();
ArtistTree.InOrderListBox(artistSorted);
ListBoxNames.DataSource = artistsSorted;
ListBoxNames.DisplayMember = "Name";
ListBoxNames.DataSource = artistsSorted;
ListBoxNames.DisplayMember = "Members";
目前,ListBoxName
列表中只有艺术家的名字,这是一个字符串值列表。无法从名称列表中提取Members
属性!您必须更改ArtistTree.InOrderListBox
方法。