我正在尝试将列表框中的所选项目添加到文本框中,并将逗号分隔在彼此之间。但它每次只读取所选项目的第一个元素。如果我选择三个值,按住ctrl,它只传递所选项目的第一个元素
if (ListBox1.SelectedItem != null)
{
// int count = ListBox1.SelectedItems.Count;
if (TextBox1.Text == "")
TextBox1.Text += ListBox1.SelectedItem.ToString();
else
TextBox1.Text += "," + ListBox1.SelectedItem.ToString();
}
如果列表框包含:1,2,3,4 textbox中的示例输出:1,1,1,1 预期输出:1,2,3,4(对于evry选择,它不应再显示已经选择的值)
答案 0 :(得分:2)
ListBox
具有SelectedItems
属性,您可以迭代:
foreach (var item in ListBox1.SelectedItems)
{
TextBox1.Text += "," + item.ToString();
}
最后你需要删除第一个","因为它将在第一个项目字符串表示之前:
TextBox1.Text = TextBox1.Text.Substring(1, TextBox1.Text.Legth - 1);
答案 1 :(得分:2)
var selectedItemText = new List<string>();
foreach (var li in ListBox1.Items)
{
if (li.Selected == true)
{
selectedItemText.Add(li.Text);
}
}
然后
var result = string.Join(selectedItemText,",");
答案 2 :(得分:0)
试试这个
var selected = string.Join(",", yourListBox.Items.GetSelectedItems());
public static class Extensions
{
public static IEnumerable<ListItem> GetSelectedItems(
this ListItemCollection items)
{
return items.OfType<ListItem>().Where(item => item.Selected);
}
}