有listview
存储我textbox
的名字,当我从listview
的行中选择单个名称时,我希望该名称显示在我的{{1}中}}。我怎样才能做到这一点 ?我的程序中有一个textbox
列表,用于存储人员详细信息。
person
答案 0 :(得分:0)
将此代码添加到listwievs SelectedIndexChanged
event
textBox1.Text = Convert.ToString(listWiev1.Items[listWiev1.SelectedIndex]);
如果要在文本框中保存修改,请添加一个按钮并将此代码添加到其Click
事件
listWiev1.Items[listBox1.SelectedIndex] = textBox1.Text;
答案 1 :(得分:0)
您可以在SelectedItems
事件中使用SelectedIndexChanged
:
private void lstPeople_SelectedIndexChanged(object sender, EventArgs e){
if(lstPeople.SelectedItems.Count > 0){
txtName.Text = lstPeople.SelectedItems[0].Text;
}
}
答案 2 :(得分:0)
正如其他人所说,你将SelectedIndexChanged
事件连接起来。
您可以执行以下操作,在单击列表视图中的项目时将重新填充所有字段。我们使用SelectedIndices
获取所选项目的当前索引,并使用该索引获取people
列表中的相应项目。
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedIndices.Count == 1) // handle it some other way if you have multiselect.
{
int index = listView1.SelectedIndices[0];
Person p = people[index];
if (p != null)
{
textBox1.Text = p.Name;
textBox2.Text = p.Email;
textBox3.Text = p.StreetAddress;
textBox4.Text = p.AddtionalNote;
dateTimePicker1.Value = p.Birthday;
}
}
}
由于上述方法可能会给出错误的结果,例如列表已排序且列表视图保持不变,因此listview中的索引将从人员列表中提供错误的项目。
因此我们使用当前选定的名称,并在people
列表中找到相应的项目。
if (listView1.SelectedItems.Count == 1) // handle it some other way if you have multiselect.
{
var item = listView1.SelectedItems[0];
Person p = people.SingleOrDefault(x => x.Name == item.Text);
if (p != null)
{
textBox1.Text = p.Name;
textBox2.Text = p.Email;
textBox3.Text = p.StreetAddress;
textBox4.Text = p.AddtionalNote;
dateTimePicker1.Value = p.Birthday;
}
}
注意:我冒昧地将属性和类名更改为CamelCase。