【问题标题】:How To Collect all listbox items in a textbox in c#如何在c#中收集文本框中的所有列表框项目
【发布时间】:2014-05-04 06:36:05
【问题描述】:

我有一个列表框,其中以 example@gmail.com 的格式收集电子邮件。

我想通过单击按钮将这些内容传输到文本框中。

我想要没有“@”的项目,所有项目都用“#”分隔。

例如...我有 a@mail.com b@mail.com c@mail.com 等等

现在用一个按钮单击所有项目必须在一个文本框中,如a#b#c#.....等等 //------------------------------------------------ ---------------------------------- 我知道如何将所有项目原样传输到文本框。

for(int i = 0; i<listBox1.Items.Count; i++)
{
if((i +1) < listBox1.Items.Count)
textBox1.Text += listBox1.Items[i] + ", ";
else
textBox1.Text += listBox1.Items[i];
}

//--------------------------------------------- ------------------------------------- 如何在没有@的文本框中获取example@mail.com格式的所有项目,每个项目用#分隔。

谢谢

【问题讨论】:

    标签: c#


    【解决方案1】:
     foreach (string item in listBox1.Items)
          textBox1.Text += item.Contains("@") ? string.Format("{0}#", item.Split('@')[0]) : string.Empty;
    

    【讨论】:

      【解决方案2】:

      喜欢这样吗?

       public MainWindow()
          {
              InitializeComponent();
              lbSource.Items.Add("example1@yahoo.com");
              lbSource.Items.Add("example2@gmail.com");
              lbSource.Items.Add("example3@hotmail.com");
              lbSource.Items.Add("example4@live.com");
      
      
          }
      
          private void Button_Click(object sender, RoutedEventArgs e)
          {
              txtShow.Text = "";
              foreach (string item in lbSource.Items)
              {
                  string tmp = item.Substring(0, item.IndexOf('@'));
                  txtShow.Text += tmp + "#";
              }
          }
      

      【讨论】:

      【解决方案3】:

      使用 IndexOf 方法,如下所示

              string output = string.Empty;
              foreach (string email in listBox1.Items)
              {
                  int atIndex = email.IndexOf('@');
                  output = output + email.Remove(atIndex) + "#";
      
              }
             textBox1.Text = output;
      

      【讨论】:

        【解决方案4】:

        试试

        textBox1.Text="";
        
        for(int i = 0; i<listBox1.Items.Count; i++)
        {
        
        textBox1.Text += listBox1.Items[i].toString().Split(new Char [] {'@'})[0] + "#";
        
        }
        

        这里

        listBox1.Items[i].toString().Split(new Char [] {'@'})[0] 将只返回a@mail.com@ 左侧的字符串,即a

        所以输出将如您所愿,即,

        例子a#b#c#

        【讨论】:

        • 它不会从每个项目中删除@
        • @Dr.Zeus 我已经使用 split() 编辑了我的答案尝试一下
        • 错误:“object”不包含“Split”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“Split”
        • @Dr.Zeus:试试 listBox1.Items[i].toString().Split(new Char [] {'@'})[0]
        猜你喜欢
        • 1970-01-01
        • 2020-09-17
        • 1970-01-01
        • 1970-01-01
        • 2014-07-20
        • 1970-01-01
        • 2013-04-20
        • 1970-01-01
        • 2013-12-07
        相关资源
        最近更新 更多