我试图将一个项目从listview1传递到另一个listview2,我想检查所选项目是否仍然不在listview2中。我试图使用for循环来获取listview2的每个索引,并将其与listview1中选择的项目进行比较。我尝试使用它,但错误表示值0不是有效索引。
private void listView1_DoubleClick(object sender, EventArgs e)
{
bool test = true;
for (int i = 0; i < listView1.Items.Count; i++)
{
string ls = listView2.Items[i].SubItems[0].Text;
string ps = listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text;
if (ls.Trim() == ps.Trim())
{
test = false;
}
}
if (test == true)
{
ListViewItem ty = new ListViewItem(listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text);
ty.SubItems.Add(listView1.Items[listView1.FocusedItem.Index].SubItems[1].Text);
listView2.Items.AddRange(new ListViewItem[] { ty });
}
else
{
MessageBox.Show("Student is already present in the list.","Cannot add to list",MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
}
按照建议弄明白了。我使用了foreach声明
private void listView1_DoubleClick(object sender, EventArgs e)
{
bool test = true;
string ps = listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text;
foreach(ListViewItem disitem in listView2.Items)
{
string ls = disitem.SubItems[0].Text;
if (ps.Trim() == ls.Trim())
{
test = false;
}}
if (test == true)
{
ListViewItem ty = new ListViewItem(listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text); ty.SubItems.Add(listView1.Items[listView1.FocusedItem.Index].SubItems[1].Text);
listView2.Items.AddRange(new ListViewItem[] { ty });
}
else
{
MessageBox.Show("Student is already present in the list.","Cannot add to list",MessageBoxButtons.OK,MessageBoxIcon.Hand);
}}
答案 0 :(得分:2)
我正在尝试将项目从listview1传递到另一个listview2和我 想要检查列表视图2中是否仍然没有所选项目。
我会将您的方法简化为:
private void listView1_DoubleClick(object sender, EventArgs e)
{
// Get the value of the selected item
string theItem = listView1.SelectedItems[0];
// Add to second list if it's not already in there
if(!listView2.Items.Contains(theItem))
{
listView2.Items.Add(theItem);
}
else
{
MessageBox.Show("Student is already present in the list.","Cannot add to list",MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
}
答案 1 :(得分:1)
private void listView1_DoubleClick(object sender, EventArgs e)
{
bool test = true;
var selectedItem = listView1.SelectedItems[0];
foreach(var item in listview2.Items)
{
string listview2Text = item.SubItems[0].Text;
string listview1Text = selectedItem.SubItems[0].Text;
if (listview2Text.Trim() == listview1Text.Trim())
{
test = false;
}
}
if (test == true)
{
//I am not sure exactly what you're trying to do if the test is true but I think you're trying to do this
listView2.Items.Add(selectedItem);
}
else
{
MessageBox.Show("Student is already present in the list.","Cannot add to list",MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
}
答案 2 :(得分:0)
我认为它应该是这样的:
private void listView1_DoubleClick(object sender, EventArgs e)
{
bool add = true;
string selected = listView1.Items[listView1.FocusedItem.Index];
foreach(ListViewItem item in listView2.Items)
if (selected.SubItems[0].Text == item.SubItems[0].Text)
{
add = false;
break;
}
if(add)
listView2.Items.Add(selected);
else
MessageBox.Show("Student is already present in the list.","Cannot add to list",MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
但我很不确定......