我在Windows应用程序中有列表框,按钮和文本框控件。如何在文本框中显示多个选定值。
这是我的代码
textBox1.Text = listBox1.SelectedItems.ToString();
但它在文本框中显示如下:(我选择了多个项目)
System.Windows.Forms.ListBox+Selec.
请帮帮我
答案 0 :(得分:7)
您可以执行以下操作:
string text = "";
foreach (System.Data.DataRowView item in listBox1.SelectedItems) {
text += item.Row.Field<String>(0) + ", ";
}
textBox1.Text = text;
答案 1 :(得分:2)
您需要迭代项目集合。类似的东西:
textBox1.Text = "";
foreach (object o in listBox1.SelectedItems)
textBox1.Text += (textBox1.Text == "" ? "" :", ") + o.ToString();
答案 2 :(得分:1)
该帖子已经很老了,但缺少正确的一般答案,该答案可以 无论数据
List<T>
的数据绑定项目类型如何,DataTable
,或者无论是否设置都可以工作DisplayMember
。
在ListBox
或ComboBox
中获取项目文本的正确方法是使用GetItemText
方法。
项目的类型无关紧要,如果您使用过DataSource
和DisplayMember
,则使用DisplayMember
返回文本,否则使用ToString
方法的项目。
例如,以逗号分隔的所选项目文本列表:
var texts = this.listBox1.SelectedItems.Cast<object>()
.Select(x => this.listBox1.GetItemText(x));
MessageBox.Show(string.Join(",", texts));
注意::对于那些无论项目类型和值成员字段如何查找选定项目值而不是选定项目文本的人,都使用GetItemValue
扩展方法。
答案 3 :(得分:0)
实际上,如果您知道输入到ListBox中的对象的类型,则所选项目就是该类型,这是一个示例: 将FileInfo的列表输入到ListBox:
FileInfo[] lFInfo = new DirectoryInfo(textBox1.Text).GetFiles();
foreach (var i in lFInfo)
lstFile.Items.Add(i);
复制功能,用于将所选文件复制到textBox2.Text的路径:
private void btnCopy_Click(object sender, EventArgs e)
{
foreach (FileInfo i in lstFile.SelectedItems)
File.Copy(i.FullName, Path.Combine(textBox2.Text, i.Name));
}
答案 4 :(得分:-1)
ListBox.SelectedItems :返回当前所选项目的集合。
循环遍历列表框的SelectedItems集合。
foreach (ListItem liItem in ListBox1.SelectedItems)
{
// write your code.
}