简体   繁体   English

winforms中的C#listview不显示添加的项目

[英]C# listview in winforms not displaying added items

I am trying to select a directory from an open file dialog in C# but when I actually add the items to the List View, it is not being displayed. 我试图从C#中的打开文件对话框中选择一个目录,但是当我实际将项目添加到列表视图时,它没有显示。 THis is my code so far... am I missing something? 到目前为止,这是我的代码......我错过了什么吗?

private void btnChoose_Click(object sender, EventArgs e)
    {
        try
        {
            FolderBrowserDialog folderPicker = new FolderBrowserDialog();
            listLeft.View = View.Details;
            if (folderPicker.ShowDialog() == DialogResult.OK)
            {
                DirectoryInfo di = new DirectoryInfo(folderPicker.SelectedPath);
                FileInfo[] files = di.GetFiles();
                DirectoryInfo[] directories = di.GetDirectories();

                foreach (DirectoryInfo directory in directories)
                {
                    listLeft.Items.Add("Directory " + directory.Name);
                }
                foreach (FileInfo file in files)
                {
                    listLeft.Items.Add(file.Name);
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("An error occurred: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

EDIT::: Added this screenshot with descriptions... 编辑:::添加此截图和说明... 在此输入图像描述

I'm assuming that listLeft is your ListView. 我假设listLeft是你的ListView。 You need to add subitems like this: 你需要添加这样的子项:

            foreach (DirectoryInfo directory in directories)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.SubItems.Add("Directory " + directory.Name);
                listLeft.Items.Add(lvi);
            }
            foreach (FileInfo file in files)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.SubItems.Add(file.Name);
                listLeft.Items.Add(lvi);
            }

EDIT: Try this: 编辑:试试这个:

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        listLeft.Columns.Add(new ColumnHeader());
        FolderBrowserDialog folderPicker = new FolderBrowserDialog();
        listLeft.View = View.Details;
        if (folderPicker.ShowDialog() == DialogResult.OK)
        {
            DirectoryInfo di = new DirectoryInfo(folderPicker.SelectedPath);
            FileInfo[] files = di.GetFiles();
            DirectoryInfo[] directories = di.GetDirectories();

            foreach (DirectoryInfo directory in directories)
            {
                listLeft.Items.Add("Directory " + directory.Name);
            }
            foreach (FileInfo file in files)
            {
                listLeft.Items.Add(file.Name);
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("An error occurred: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

It should be adding to the listbox - if there are objects in the directories and files objects... try setting a breakpoint in each method and seeing what happens. 它应该添加到列表框中 - 如果目录和文件对象中有对象...尝试在每个方法中设置断点并查看发生的情况。 If the breakpoints aren't triggered then something is wrong with your Get() methods... 如果未触发断点,则Get()方法出现问题......

your question states 'listview in winforms'. 你的问题陈述了'winforms'列表视图。

But a System.Windows.Forms.ListBox does not have View property, so your line of code 但是System.Windows.Forms.ListBox没有View属性,所以你的代码行

listLeft.View = View.Details;

does not compile when I try to reproduce. 我尝试重现时不编译。

Are you perhaps referring to a WPF listbox instead? 您是指代WPF列表框吗? In that case, can you show us more code, in particular your data binding? 在这种情况下,您能告诉我们更多代码,特别是您的数据绑定吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM