You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取ListBox中SelectedItems的名称并输出至TextBox?

解决多选ListBox选中项显示到TextBox的问题

嘿,这个需求很常见,我来一步步教你怎么实现!

首先你说得没错,ListBox.SelectedItems确实是SelectedObjectCollection类型,它本质上是一个可枚举的集合,我们只需要遍历这个集合,把每个选中项的文本提取出来,再拼接成一个字符串放到TextBox里就行。

下面给你几种常用的实现方式:

方法1:foreach循环手动拼接

这是最直观的方式,适合新手理解:

// 先清空TextBox的原有内容
txtBox.Text = string.Empty;

// 遍历所有选中项
foreach (var item in lstBox.SelectedItems)
{
    // 如果你ListBox里的项是字符串直接添加的,ToString()就可以拿到文本
    // 要是绑定的是自定义对象,这里要换成item对应的属性,比如item.ProductName
    txtBox.Text += item.ToString() + ", "; 
}

// 最后去掉末尾多余的分隔符(如果有的话)
if (txtBox.Text.Length > 0)
{
    txtBox.Text = txtBox.Text.Substring(0, txtBox.Text.Length - 2);
}

方法2:用LINQ+String.Join简化代码

这种方式更简洁优雅,一行代码就能搞定:

// 把选中项转成字符串数组,再用逗号分隔拼接
txtBox.Text = string.Join(", ", lstBox.SelectedItems.Cast<object>().Select(item => item.ToString()));

如果你的ListBox绑定的是自定义对象,比如Product类,只要把item.ToString()换成item.ProductName这类属性就行:

txtBox.Text = string.Join(", ", lstBox.SelectedItems.Cast<Product>().Select(p => p.ProductName));

方法3:考虑换行显示(如果需要)

要是你希望每个选中项单独占一行,只需要把分隔符换成Environment.NewLine就行:

txtBox.Text = string.Join(Environment.NewLine, lstBox.SelectedItems.Cast<object>().Select(item => item.ToString()));
// 记得把TextBox的Multiline属性设为true,不然换行显示不出来哦!

另外要提醒你:如果用户可能选中0项的话,最好加个判断避免TextBox出现空的分隔符,不过你需求里是1-52项,这个可以根据情况灵活调整。

内容的提问来源于stack exchange,提问作者Aaron Lind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:31:10