我有两个文本框:姓名和电子邮件。当我点击按钮时,他们将文本数据加载到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
中。我怎样才能做到这一点?谢谢!
答案 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
}