列表视图项目将显示在文本框中

时间:2014-02-18 07:27:47

标签: c# listview textbox

listview存储我textbox的名字,当我从listview的行中选择单个名称时,我希望该名称显示在我的{{1}中}}。我怎样才能做到这一点 ?我的程序中有一个textbox列表,用于存储人员详细信息。

person

3 个答案:

答案 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。