【问题标题】:Fill ComboBox With Directory Files用目录文件填充 ComboBox
【发布时间】:2016-02-22 20:43:43
【问题描述】:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace POC1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            string[] files = Directory.GetFiles(@"C:\\");
            foreach (string file in files)
            {
                comboBox1.Items.AddRange(files);
            }
        }

    }
}

我使用以下代码,但无法让组合框填充任何数据。我很确定我使用了我搜索过的示例。

【问题讨论】:

  • 你可以只使用comboBox1.DataSource = files; comboBox1.DataBind(); 吗? FBD 似乎也没有使用。
  • 使用断点,files 在调用GetFiles 之后是否有任何条目?此外,for 循环看起来也很可疑。 file in files ... AddRange(fileS)
  • @ibiza 我现在删除了它。我的错。
  • 您希望comboBox1.Items.Add(file) 在循环中,或者comboBox1.Items.AddRange(files) 不带循环。
  • 我试过你的代码,没有问题。用户权限?

标签: c#


【解决方案1】:

并不是说它可能会有所作为,而是您循环并添加所有目录的次数有目录。应该更像

string[] files = Directory.GetFiles(@"C:\\");
        foreach (string file in files)
        {
            comboBox1.Items.Add(file);
        }

或更简单

comboBox1.Items.AddRange(Directory.GetFiles(@"C:\\"));

另外,除非你在其他地方有它(自从我使用 winforms 已经有一段时间了)你需要设置你的表单加载事件。

this.Load += Form1_Load;

【讨论】:

  • 如果他双击表格让它自动生成,他不需要注册它,它已经完成了。但是,如果他只是简单地复制并粘贴它,那么可以。这就是问题所在。
【解决方案2】:

您要么需要删除循环并拥有一个 .AddRange(files) ,要么将循环内的行更改为 comboBox.Items.Add(file) ,因为上面的示例是为每次迭代添加所有文件。

还有一点值得注意,添加item的时候,不一定是字符串,可以是对象,只要适当的响应.ToString()即可。

查看此链接,https://social.msdn.microsoft.com/Forums/windows/en-US/c7a82a6a-763e-424b-84e0-496caa9cfb4d/how-add-a-item-to-combobox?forum=winforms

【讨论】:

  • 你是对的,它肯定会为每个文件添加整个文件夹内容,但这并不能解释他的问题,根本没有任何显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
相关资源
最近更新 更多