我是c#的初学者。当用户选择在ListView
中填充的项目名称时,我只需要显示ComboBox
的一个项目(及其子项目)。
我知道要使用的事件,即SelectedIndexChanged
事件。但我不知道该怎么做。
目前我正在使用包含XML文件和数据集的替代大流程,这使我的项目更加复杂。
ListView
中有很多项目。相同的项目名称也在ComboBox
。
如果你有时间,请看看我的小项目。的 download
编辑:此处“仅显示一个项目”表示仅严格显示一个项目,而不是选择特定项目并显示所有项目。
答案 0 :(得分:5)
为什么不用这段代码来获得所需的结果:
<强>增加:强>
请按照以下步骤操作:
按如下方式创建国家/地区类:
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; }
}
根据您的要求填写国家/地区信息,如下所示:
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" }
};
修改* 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;
}
修改 ComboBox 和 ListView 的 SelectedIndexChanged 事件,如下所示:
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;
}
}
通过遵循此方法,您甚至无需匹配商品的订单。
快乐编码......
答案 1 :(得分:0)
尝试多次尝试后,我决定使用DataSet
或DataTable
,因为我们需要保存对列表视图项所做的更改,这些更改应保存在DataSet
或{ {1}}以便稍后可以召回这些项目。