1

![在此处输入图像描述][1] 您好,我正在尝试将来自两个文本框的信息显示到两个单独的列表框中;一个显示艺术家姓名,一个显示成员数量。目前,当我单击“添加艺术家”按钮时会发生这种情况:

如您所见,仅显示艺术家姓名,这是由于艺术家类中的这段代码:

这是我的表单类中的代码,它将艺术家姓名显示到 listbox1 中。

我试过 listBox2.Items.Add(Members); 和 listBox2.Items.Add(artist.Members); 为了尝试让它工作,但是他们都找不到成员。我发现的唯一方法是使用以下代码,但是 foreach 然后会出现错误消息:

![在此处输入图片描述][2] 我真的不知道从哪里开始,感谢您的帮助!(我在下面插入了我的 Artist 类和 Form 类的代码,以防有任何帮助)

4

2 回答 2

1

你可能想要:

ArtistTree.InOrderListBox

返回 aList<Artist>而不是 a List<string>。这样你的循环:

foreach (Artist artist in ListBoxName)
{ 
     listBox1.Items.Add(artist);
     listBox2.Items.Add(artist.Members);
}

应该管用。

现在你得到一个错误,因为 ListBoxName 被声明为 aList<string>但你试图迭代它(使用 foreach)并说 List 中的每个项目都是一个艺术家,并且你之前说过每个元素的类型list 是您声明中的字符串

List<string> ListBoxName = new List<string>();

因此,您会收到编译错误,因为您没有从 Artist 到字符串的强制转换,即您不能这样做:

Artist a = new Artist();
string castMe = (string) a;

调用 ToString() 与强制转换不同。

HTH,弥敦道

于 2013-03-20T18:11:45.947 回答
1

修改您的ArtistTree.InOrderListBox方法,使其返回(或填充)一个Artists 列表而不是字符串 ( Artist.Name)。也不需要方法的参数为 baref参数。一个普通的按值参数完成这项工作,因为该方法不需要更改参数本身,而是更改参数的内容

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方法。

于 2013-03-20T18:13:53.203 回答