在WinForm的列表框中选择的项目(listbox selected items in winfo

2019-07-17 22:42发布

我有列表框,按钮和文本框控件在Windows应用程序。 我怎样才能显示一个文本框多选择的值。

这是我的代码

textBox1.Text = listBox1.SelectedItems.ToString();

但在这样的文本显示:(我选择一个以上的项目)

System.Windows.Forms.ListBox+Selec. 

请帮我

Answer 1:

你可以这样做:

string text = "";

foreach (System.Data.DataRowView item in listBox1.SelectedItems) {
    text += item.Row.Field<String>(0) + ", ";
}
textBox1.Text = text;


Answer 2:

您需要遍历项目的集合。 就像是:

textBox1.Text = "";
foreach (object o in listBox1.SelectedItems)
   textBox1.Text += (textBox1.Text == "" ? "" :", ") + o.ToString();


Answer 3:

该职位是很老,但缺乏不管它可以工作在数据绑定的项目类型,例如用于一个正确的答案一般List<T> DataTable ,或无论设置或不设置能正常工作DisplayMember

正确的方式来获得一个项目的文本在一个ListBoxComboBox使用GetItemText方法。

不要紧,什么是项目的类型,如果您使用DataSourceDisplayMember它使用DisplayMember返回文本,否则它使用ToString项目的方法。

例如,为了获得一个逗号分隔所选项目的文本列表:

var texts = this.listBox1.SelectedItems.Cast<object>()
                .Select(x => this.listBox1.GetItemText(x));

MessageBox.Show(string.Join(",", texts));

注:对于那些谁是项目类型和值的成员领域寻找所选项目的值,而所选择的项目文本,无论他们使用GetItemValue扩展方法。



Answer 4:

Actrually,如果你知道你的对象输入到列表框的类型,所选择的项目是这种类型的,这里是一个示例:FileInfo的输入清单列表框:

        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));
  }


Answer 5:

ListBox.SelectedItems :返回当前选定项的集合。

通过列表框的SelectedItems集合循环。

foreach (ListItem liItem in ListBox1.SelectedItems)
{
    // write your code.   
}


文章来源: listbox selected items in winform