C#表单列表框



![在此输入图像描述][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方法,使其返回(或填充(Artists列表,而不是字符串(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方法。

相关内容

  • 没有找到相关文章

最新更新