我使用密码填充列表视图。 然后我想获取所选项目文本,并在单击它时将其传递给文本框。
到目前为止,我有:
private void passwordListView_SelectedIndexChanged(object sender, EventArgs e)
{
ListViewItem listViewItem = new ListViewItem();
listViewItem = passwordListView.SelectedItems[0];
passwordTextBox.Text = listViewItem.Text;
}
第一次按下它时它会起作用并填充文本框但是如果我在列表视图中单击一个不同的密码则会抛出异常。
我是否遗漏了一些明显的东西?
答案 0 :(得分:0)
在winforms ListView中更改选定索引时,第一个事件是针对现已取消选择的项目。所以当时SelectedItems是空的。
通过if (passwordListView.SelectedItems.Count == 0) return;
在此之后,您将获得第二个事件,该事件将用于新选择,您可以对此采取行动。
顺便说一下,你不需要像你在你的片段中那样创建一个新的ListViewItem,这将节省额外的不必要的创建:
ListViewItem listViewItem = passwordListView.SelectedItems[0];
答案 1 :(得分:0)
也许你可以试试这个:
private void passwordListView_SelectedIndexChanged(object sender, EventArgs e)
{
if(passwordListView.SelectedItems.Count > 0)
passwordTextBox.Text = passwordListView.SelectedItems.First().Text;
}