如何防止在C#Windows窗体列表视图中添加新项?

时间:2016-05-05 15:41:06

标签: c#

我正在创建一个包含set按钮和listview的Windows窗体。它允许用户单击一个按钮,然后在列表视图上显示相关的产品名称,如果用户单击相同的按钮,产品项目仍然会连续添加到列表视图中。但我多次尝试过,它无法阻止在列表视图中添加新项目。我尝试将if语句作为

       if(lvwItemList.Items.Contains(item)){
    lvwItemList.Items.AddRange(new ListViewItem[] {item});
}
else{
    MessageBox("Record exists");
}

,它也不起作用。如何在单击同一产品按钮时阻止将相同的产品项目添加到列表视图中并增加数量? image description

void TempList(object sender, EventArgs e)
    {
        try
        {
            Button b = (Button)sender;
            SqlCommand tempcmd = new SqlCommand("SELECT itemName,quantity,price FROM Products WHERE itemName = @name", con);
            tempcmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = b.Text;

            SqlDataAdapter tempda = new SqlDataAdapter(tempcmd);
            DataTable tempdt = new DataTable();
            tempda.Fill(tempdt);

            foreach(DataRow tempdr in tempdt.Rows){
                ListViewItem item = new ListViewItem(tempdr["itemName"].ToString());
                item.SubItems.Add(tempdr["quantity"].ToString());
                item.SubItems.Add(tempdr["price"].ToString());
                lvwItemList.Items.AddRange(new ListViewItem[] {item});
                lvwItemList.EnsureVisible(lvwItemList.Items.Count - 1);
                TransactionTotalCount = TransactionTotalCount + (decimal)tempdr["price"];
            }
        }
        catch(Exception tempex)
        {
            MessageBox.Show(tempex.Message, "Error");
        }
    }

1 个答案:

答案 0 :(得分:1)

您应该使用ContainsKey(string key)代替Contains(ListViewItem项目)

或者:

         var txt = textBox1.Text;
            //if (!lvwItemList.Items.ContainsKey(txt))
             if (lvwItemList.FindItemWithText(txt) == null)
            { 
                ListViewItem item = new ListViewItem();
                item.Text =textBox1.Text;
                lvwItemList.Items.AddRange(new ListViewItem[] { item });
            }
            else
            {
                MessageBox.Show ("Record exists");
            }