如何在文本框中显示列表<t>元素</t>

时间:2014-10-18 03:38:59

标签: c# asp.net list textbox listbox

我有两个文本框:姓名和电子邮件。当我点击按钮时,他们将文本数据加载到list<T>。该数据也显示在列表框中。列表框最终看起来像这样:

Name: George| E-mail: george@george.com

Name: William | E-mail: william@william.com

Name: Charles | E-mail: charles@charles.com

我想要的是当我双击列表框项目时,该项目数据显示在我用于添加数据的文本框中。类似于:我双击&#34; George&#34;并且他的名字显示在文本框Name中,他的电子邮件显示在文本框E-mail中。我怎样才能做到这一点?谢谢!

2 个答案:

答案 0 :(得分:0)

string foo = listBox1.SelectedItem.ToString();

string[] bar = foo.Split('|');

string name = bar[0].SubString(bar[0].LastIndexOf(':')+2);
string email = bar[1].SubString(bar[1].LastIndexOf(':')+2);

nameTextBox.Text = name;
emailTextBox.Text = email;

在列表框的双击事件中写下这样的内容。

答案 1 :(得分:0)

什么是T?

如果你做得对,T是一些数据容器类,它具有每个不同值的属性,并且会覆盖ToString()以按照你想要的方式格式化ListBox中的数据。

假设这一切都是真的,那么你只需将ListBox项设置为单独的T实例即可。当用户双击某个项目时,您只需将SelectedItem强制转换回T实例以检索属性值,以便将它们复制回原始输入表单。

e.g:

class ListBoxItem
{
    public string Name { get; private set; }
    public string Email { get; private set: }

    public ListBoxItem(string name, string email)
    {
        Name = name;
        Email = email;
    }

    public override string ToString()
    {
        return string.Format("Name: {0} | E-mail: {1}", Name, Email);
    }
}

(somewhere you have a List<ListBoxItem> and do something like listBox1.Items.AddRange(itemList))

private void listBox1_DoubleClick(object sender, EventArgs e)
{
    ListBoxItem item = (ListBoxItem)listBox1.SelectedItem;

    // use item.Name and item.Email to initialize TextBox values
}