我可以使用组合框中的所有项目循环访问字典吗?



我之前尝试过问这个问题,但解释得不够好。我会再试一次,我有一个字典,可以获取和设置图像的字符串并列出获取字符串。字典项目存储在列表框中,当我双击它设置为另一个组合框的项目时。我想单击一个按钮,该按钮将遍历字典,如果它们与字典中的任何内容匹配,它将存储在listView中。我不想要图像,虽然只是字符串名称和价格,这是类和字典:

    class BookTitle
    {
        public string ImageTitle { get; set; }
        public List<string> Prices { get; }
        public BookTitle(string imageTitle, params string[] prices)
        {
            ImageTitle = imageTitle;
            Prices = new List<string>(prices.Length);
            Prices.AddRange(prices);
        }
    }
    private Dictionary<string, BookTitle> prices = new Dictionary<string, BookTitle>
    {
        { "Visual Basic", new BookTitle("vb.png", "$55") },
        { "Java", new BookTitle("java.png", "$45") },
        { "C#", new BookTitle("c#.png", "$75") },
        { "LAN Networks", new BookTitle("lan.png", "$68") },
        { "Windows Networking", new BookTitle("windows.png", "$49") },
        { "More About Networking", new BookTitle("more.png", "$54") },
        { "Web Programming", new BookTitle("web.png", "$67") },
        { "JavaScript", new BookTitle("javascript.png", "$64") },
        { "ASP", new BookTitle("asp.png", "$50") }
    };

你们认为我应该上一节新课吗?我已经尝试过这个中的许多其他:

    private void finalizeButton_Click(object sender, EventArgs e)
    {
        string cartItems = cartComboBox.Items.ToString();
        if (prices.Keys.Contains(cartItems))
        {
            BookTitle bt = prices[cartItems];
            ListViewItem list = cartListView.Items.Add(cartItems);
            list.SubItems.Add(cartItems);
        }
    }
你可以

这样做,

    private void finalizeButton_Click(object sender, EventArgs e)
        {
            foreach (var cmbObj in cartComboBox.Items)
            {
                if (prices.Keys.Contains(cmbObj.ToString()))
                {
                     BookTitle tempOut;
                     ListViewItem list = 
                     cartListView.Items.Add(cmbObj.ToString());
                    if (prices.TryGetValue(cmbObj.ToString(), out tempOut))
                        list.SubItems.Add(tempOut.Prices[0].ToString());
                }
            }
        }
@Sajeetharan我会

接受你的回答,因为它非常有帮助,让我走上了正确的轨道。我最终这样做了:

    private void finalizeButton_Click(object sender, EventArgs e)
    {
        foreach (var comboItem in cartComboBox.Items)
        {
            if (prices.Keys.Contains(comboItem.ToString()))
            {
                BookTitle bt = prices[comboItem.ToString()];
                ListViewItem list = cartListView.Items.Add(comboItem.ToString());
                foreach (var p in bt.Prices)
                {
                    list.SubItems.Add(p);
                }
            }
        }
    }

最新更新