您好我正在尝试使用列表框的标记项。
继承我的代码。
int number = 0;
foreach (ListViewItem item in listBox1.Items)
{
Tag tag = (Tag) item.Tag;
saveSlide(showid, tag.photoid, enumber);
number++;
}
问题我正在运行程序时我得到一条错误消息sayin无法将类型字符串转换为system.ListView但我还没有在我的程序中声明项目为字符串
这是我将项目添加到列表框的地方。请帮忙。我处于一个死胡同,还有更多的事情要做
private void buttonAdd_Click(object sender, EventArgs e)
{
//add selected item into listBox
DataRowView drv = (DataRowView)listBox1.SelectedItem;
Tag tag = new Tag();
string title = drv["title"].ToString();
ListViewItem item = new ListViewItem(title);
item.Tag = tag;
tag.photoid = (int)drv["photoid"];
listBox1.Items.Add(title);
}
答案 0 :(得分:2)
您要将title
添加到listBox1.Items
的Poppy。
title
的类型为string
。
因此,当您访问它时,请使用string
类型foreach (string item in listBox1.Items)
。
尝试。这有帮助吗?
int number = 0;
foreach (string item in listBox1.Items)
{
Tag tag = (Tag) item.Tag;
saveSlide(showid, tag.photoid, enumber);
number++;
}
答案 1 :(得分:2)
这样做,您需要显示将项目添加到列表中的代码:
private class Tag
{
public override string ToString()
{
return "Tag";
}
}
ListBox listBox = new ListBox();
listBox.Items.Add(new ListViewItem { Tag = new Tag() });
foreach (ListViewItem item in listBox.Items)
{
Tag tag = (Tag)item.Tag;
Console.WriteLine(tag);
}
编辑以下代码:
您正在向ListBox而不是ListViewItem添加字符串:
listBox1.Items.Add(title);
应为listBox1.Items.Add(item);
答案 2 :(得分:1)
ListBox.Items是ObjectCollection。这意味着您可以选择要放入其中的对象类型。
当你这样做时:
string title = drv["title"].ToString();
listBox1.Items.Add(title);
你将字符串对象放入其中,所以你需要像这样把它们拿出来:
foreach (string item in listBox1.Items)
相反,您可能希望您的代码更像这样:
ListViewItem item = new ListViewItem(title);
item.Tag = tag;
tag.photoid = (int)drv["photoid"];
listBox1.Items.Add(item); // The difference is here - add *item* not *title*
然后你就可以按照你最初写的方式使用它了:
foreach (ListViewItem item in listBox1.Items)
答案 3 :(得分:0)
Tag是否有名为photoid的成员?也许你需要一个演员将你的'标签'转换成它应该是什么?
//Tag tag = (Tag) item.Tag;
MyObject tag = (MyObject)item.Tag;
saveSlide(showid, tag.photoid, enumber);
number++;
答案 4 :(得分:0)
除非你把事情命名为奇怪,否则我会说错误是你试图从ListBox中获取ListViewItem。
答案 5 :(得分:0)
只需更改第二个代码段的最后一行代码,一切都会好的,如下所示。
listBox1.Items.Add(项目);
关于错误
您在listBox中添加了字符串作为项目,并且在foreach中,项目(这是一个字符串)被尝试隐式转换(caste)到ListViewItem,而hich不起作用,编译器会给出错误。
希望它能奏效。