如何通过鼠标单击获取文本框中的列表框项?

时间:2014-05-01 15:41:57

标签: c#

我有一个名为listbox1的列表框,其中收集了电子邮件。我想通过选择该项目listbox1中的textbox1项目。

我能做到:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        textBox1.Text = listBox1.SelectedItem.ToString();
    }

所有电子邮件的格式都相同:a@gmail.comb@gmail.com。 我希望文本框中的所选项目没有@gmail.com部分。

我怎样才能实现这个目标?

列表框中收集的项目是:

  • ab@gmail.com
  • bc@gmail.com
  • gh@gmail.com

在这种情况下,我只想采用abbcgh

3 个答案:

答案 0 :(得分:1)

您可以使用String.IndexOf method查找@符号的位置,然后使用String.Substring从电子邮件中获取用户名:

var emails = new List<String>() 
{ 
    "abc@gmail.com", 
    "xyz123@gmail.com", 
    "a@gmail.com" 
};
emails.ForEach(email => 
{
    Console.WriteLine(email.Substring(0, email.IndexOf("@")));
});

示例输入的输出是:

abc
xyz123
a

应用于您的文本框案例,解决方案可能如下所示:

var email = listBox1.SelectedItem.ToString();
textBox1.Text =  = email.Substring(0, email.IndexOf("@"));

答案 1 :(得分:0)

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    textBox4.Text = listBox1.SelectedItem.ToString().Split('@')[0];
}

答案 2 :(得分:0)

这可以通过查找'@'符号的索引,然后仅使用SubString()到电子邮件地址来完成。

 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    var selectedEmail = listBox1.SelectedItem.ToString();    
    textBox4.Text = selectedEmail.SubString(0, selectedEmail.IndexOf("@") - 1);
}