C# 从listView中仅选择一项
我是c语言的初学者。当用户选择一个项目名称时,我只需要显示ListView的一个项目及其子项目,该项目名称也填充在ComboBox中 我知道要使用的事件,即SelectedIndexChanged事件。但我不知道该怎么办 目前,我正在使用替代的大流程,其中包括XML文件和数据集,这使得我的项目更加复杂 ListView中有许多项。组合框中也有相同的项目名称 如果你有时间,请看看我的非常小的项目C# 从listView中仅选择一项,c#,.net,winforms,listview,C#,.net,Winforms,Listview,我是c语言的初学者。当用户选择一个项目名称时,我只需要显示ListView的一个项目及其子项目,该项目名称也填充在ComboBox中 我知道要使用的事件,即SelectedIndexChanged事件。但我不知道该怎么办 目前,我正在使用替代的大流程,其中包括XML文件和数据集,这使得我的项目更加复杂 ListView中有许多项。组合框中也有相同的项目名称 如果你有时间,请看看我的非常小的项目 编辑:此处仅显示一项意味着仅严格显示一项,而不是选择特定项并显示所有项。为什么不使用这段代码来获得所需
编辑:此处仅显示一项意味着仅严格显示一项,而不是选择特定项并显示所有项。为什么不使用这段代码来获得所需的结果: 增加: 遵循以下步骤: 创建一个国家/地区类,如下所示:
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" }
};
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;
}
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;
}
}
通过采用这种方法,您甚至不需要匹配项目的顺序
愉快的编码…在尝试了许多尝试之后,我决定使用DataSet或DataTable,因为这里我们需要保存对列表视图项所做的更改,这些更改应该保存在DataSet或DataTable中,以便以后可以调用这些项。如果希望列表视图只显示从中选择的一项,为什么列表视图中有许多项组合框?此外,显示一些代码可能会有所帮助。当用户从组合框中选择时,卸载ListView,然后以与之前相同的方式重新加载,但会限制它。例如:If item.Name==comboBox.SelectedItem.ToString伪代码。是,我有相同的项。。项目名称相同,区分大小写列表视图中有许多项目,仅从以前开始,我需要通过隐藏所有其他项目或临时删除它们或以某种方式仅显示一个项目。这也不起作用。我会和你分享我的小项目等等,不,还是不行。我分享的代码是否使用了这种技术?是的,它在我这边工作得非常好。唯一的问题是这些项目没有按照我在回答中提到的顺序排列。检查是否有正确的事件处理程序。我将ListView\u Click事件处理程序更改为ListView\u SelectedIndexChanged。确保这在你身边是正确的。我期待着你给予我一点赞赏。