从listView中只选择一个项目

Mr_*_*een 3 .net c# listview winforms

我是c#的初学者.ListView当用户选择同时填充的项目名称时,我只需显示(及其子项目)的一个项目ComboBox.

我知道要使用的事件即SelectedIndexChanged事件.但我不知道该怎么做.

目前我正在使用包含XML文件和数据集的替代大流程,这使我的项目更加复杂.

里面ListView有很多东西.相同的项目名称也在ComboBox.

如果你有时间,请看看我的小项目.下载

编辑:这里" 仅显示一个项目 "意味着严格只显示一个项目,而不是选择特定项目并显示所有项目.

Fur*_*dar 5

为什么不使用这段代码来获得所需的结果:

添加:

跟着这些步骤:

  1. 创建一个Country类,如下所示:

    class Country
    {
        public string Name { get; set; }
        public string Flag { get; set; }
        public string Continent { get; set; }
        public string Capital { get; set; }
        public string Population { get; set; }
        public string Currency { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 根据您的要求填写国家/地区信息,如下所示:

    List<Country> countryList = new List<Country>() { 
        new Country() { Name = "India", Capital = "Delhi", Continent = "Asia", Currency = "Rupee", Population = "1.2 Billion", Flag = "india.gif" }, 
        new Country() { Name = "Pakistan", Capital = "Islamabad", Continent = "Asia", Currency = "Rupee", Population = "0,5 Billion", Flag = "pakistan.gif" }, 
        new Country() { Name = "Sri Lanka", Capital = "Kotte", Continent = "Asia", Currency = "SriLankan Rupee", Population = "20277597", Flag = "sri_lanka.gif" } 
    };
    
    Run Code Online (Sandbox Code Playgroud)
  3. 修改*frmFlag_Load*事件,如下所示:

    private void frmFlag_Load(object sender, EventArgs e)
    {
        lvMain.Items.Clear();
        tlstrpcmbCountries.Items.Clear();
    
        tlstrpcmbCountries.Items.Add("All");
        for (int i = 0; i < countryList.Count; i++)
        {
            tlstrpcmbCountries.Items.Add(countryList[i].Name);
        }
    
        tlstrpcmbCountries.SelectedIndex = 0;
        tlstrpcmbViews.SelectedIndex = 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 修改ComboBoxListViewSelectedIndexChanged事件,如下所示:

    private void tlstrpcmbCountries_SelectedIndexChanged(object sender, EventArgs e)
    {
        var country = countryList.Where(c => c.Name.Equals(tlstrpcmbCountries.SelectedItem.ToString())).Select(s => s).FirstOrDefault();
    
        if (country != null)
        {
            lvMain.Items.Clear();
    
            ListViewItem item = new ListViewItem(country.Name, country.Flag);
    
            item.SubItems.Add(country.Continent);
            item.SubItems.Add(country.Capital);
            item.SubItems.Add(country.Population);
            item.SubItems.Add(country.Currency);
            lvMain.Items.Add(item);
    
            lvMain.EnsureVisible(0);
            item.Selected = true;
            item.Focused = true;
            lvMain.Select();
        }
    }
    
    private void lvMain_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lvMain.SelectedItems.Count > 0)
        {
            var selected = lvMain.SelectedItems[0];
            lblCountryName.Text = selected.SubItems[0].Text;
            lblContinent.Text = selected.SubItems[1].Text;
            lblCapitalCity.Text = selected.SubItems[2].Text;
            lblPopulation.Text = selected.SubItems[3].Text;
            lblCurrencyName.Text = selected.SubItems[4].Text;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

按照这种方法,您甚至不需要匹配商品的订单.

快乐编码......

  • 有了这么多的专注支持,我期待一点点赞赏. (2认同)