我来说第二个问题吧
private void toolStripLabel1_Click(object sender, EventArgs e)
{
// for (int i = 0; i < listView1.CheckedItems.Count; i++)
// {
//listView2.Items.Add(listView1.CheckedItems[i]);
// string [] fm = new ListViewItem();
//fm = listView1.CheckedItems[i];
//listView2.Items.AddRange(fm);
//ListView[] fm = new ListView();
//listView2.Items.AddRange(fm);
// }
//先完成一个。
// ListViewItem[] items = new ListViewItem();
//listView1.CheckedItems.CopyTo(items);
bool flag = false; //定义一个标记
if (listView1.SelectedItems.Count == 0)
{
MessageBox.Show("先选择菜");
return;
}
for (int j = 0; j < listView1.SelectedItems.Count;j++ )
{
flag = false; //每一个菜进来以后,都把标记初始为false
ListViewItem item = listView1.SelectedItems[j];
//listView2.Items.Add();
for (int i = 0; i < listView2.Items.Count; i++)
{
string s = listView2.Items[i].Text;
if (s == listView1.SelectedItems[j].Text)
{
int x = int.Parse(listView2.Items[i].SubItems[2].Text);
x++;
listView2.Items[i].SubItems[2].Text = x.ToString();
//return; //这里不能用return,return就退出方法了,点的二个菜就不会被循环到
flag = true; //如果该菜名已被点过,就设置为true
break; //退出已点菜的循环,但不退出菜名的循环,因为还要循环点的下一个菜
}
}
if (flag == false) //判断菜名是否已被点过,如点过,那flag就是true,就不用添加已点菜,如没有点过,flag就是false,就加一项
{
listView2.Items.Add(listView1.SelectedItems[j].Text);
listView2.Items[listView2.Items.Count - 1].SubItems.Add(listView1.SelectedItems[j].SubItems[1].Text);
listView2.Items[listView2.Items.Count - 1].SubItems.Add("1");
}
//以上先for与先加如果调换就不同。。结果会出错,原因:
}
}