如何用鼠标单击在文本框中获取列表框项

本文关键字:获取 列表 文本 何用 鼠标 单击 | 更新日期: 2023-09-27 18:01:24

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

我可以这样做:

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

所有邮件格式相同:a@gmail.com, b@gmail.com。我想在没有@gmail.com部分的文本框中选择的项目。

我怎样才能做到这一点?

列表框中收集的项为:

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

在本例中,我只想取abbcgh

如何用鼠标单击在文本框中获取列表框项

您可以使用String。IndexOf方法查找@符号的位置,然后使用String。从电子邮件中获取用户名的子字符串:

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("@"));

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

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