C# winform中的列表框选定项目

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1420514/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-06 16:20:27  来源:igfitidea点击:

listbox selected items in winform

c#winformslistbox

提问by Surya sasidhar

I have listbox, button, and textbox controls in a Windows application. How can I display multiple selected values in a textbox.

我在 Windows 应用程序中有列表框、按钮和文本框控件。如何在文本框中显示多个选定的值。

this is my code

这是我的代码

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

but it display in textbox like this: (I select more than one item)

但它显示在这样的文本框中:(我选择了多个项目)

System.Windows.Forms.ListBox+Selec. 

please help me

请帮我

采纳答案by Robban

You could do something like:

你可以这样做:

string text = "";

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

回答by JDunkerley

You need to iterate over the collection of items. Something like:

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

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

回答by rahul

ListBox.SelectedItems: Returns a collection of the currently selected items.

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

Loop through the SelectedItems collection of the listbox.

循环遍历列表框的 SelectedItems 集合。

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

回答by Xiaohuan ZHOU

Actrually, if you know the type of object you input into ListBox, the selected item is that type, here is a sample: Input List of FileInfo to ListBox:

实际上,如果您知道输入到 ListBox 中的对象类型,则所选项目就是该类型,这里是一个示例:将 FileInfo 的列表输入到 ListBox:

        FileInfo[] lFInfo = new DirectoryInfo(textBox1.Text).GetFiles();
        foreach (var i in lFInfo)
            lstFile.Items.Add(i);

A copy function to copy the selected files to path of textBox2.Text:

将选定文件复制到 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));
  }

回答by Reza Aghaei

The post is quite old but lacks a correct general answer which can work regardless of the data-bound item type for example for List<T>, DataTable, or can work regardless of setting or not setting DisplayMember.

该帖子很旧,但缺乏正确的通用答案,无论数据绑定项目类型如何,例如 for List<T>, DataTable都可以工作,或者无论设置或不设置都可以工作 DisplayMember

The correct way to get text of an item in a ListBoxor a ComboBoxis using GetItemTextmethod.

在 aListBox或 a 中获取项目文本的正确方法ComboBox是使用GetItemText方法。

It doesn't matter what is the type of item, if you have used DataSourceand DisplayMemberit uses DisplayMemberto return text, otherwise it uses ToStringmethod of item.

项目的类型是什么并不重要,如果您使用过DataSource并且DisplayMember它用于DisplayMember返回文本,否则它使用ToString项目的方法。

For example, to get a comma-separated list of selected item texts:

例如,要获取以逗号分隔的所选项目文本列表:

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

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

Note:For those who are looking for selected item values rather that selected item texts regardless of the item type and the value member field, they use GetItemValueextension method.

注意:对于那些正在寻找选定项目值而不是选定项目文本的人,无论项目类型和值成员字段如何,他们都使用GetItemValue扩展方法。