【问题标题】:Items being added to ListView but aren't visible项目被添加到 ListView 但不可见
【发布时间】:2018-02-02 00:56:21
【问题描述】:

我正在尝试将项目添加到 ListView,而 ListView 似乎已填充。滚动条出现,但标题消失并且项目不可见。我不明白发生了什么。

当我尝试一次填充一个项目时,这些项目会显示出来。如果我将视图更改为 List、LargeIcon、SmallIcon 或 Tile,所有项目都会显示出来。出于某种原因,如果我将视图设置为详细信息,则项目不会出现,并且列标题也会消失。

这是代码...

private void RefreshUIForRecord()
    {
        string colRecFlagStr = "Recorded";
        lstFiles.Clear();
        int fileId;
        int round;
        string descript;
        int recFlag;
        DataRow dr = null;
        for (int i = 0; i < DtList.Rows.Count; i++)
        {
            dr = DtList.Rows[i];
            fileId = Convert.ToInt32(dr.ItemArray[0]);
            round = Convert.ToInt32(dr.ItemArray[1]);
            descript = dr.ItemArray[2].ToString().Trim();
            recFlag = Convert.ToInt32(dr.ItemArray[4]);
            bool add = false;
            Color color = Color.Black;

            switch (recFlag)
            {
                case 1:
                    if (chkShowRecd.Checked)
                    {
                        add = true;
                        color = Color.Green;
                        colRecFlagStr = "Recorded";
                    }
                    break;
                case 2:
                    if (chkShowDontRec.Checked)
                    {
                        add = true;
                        color = Color.Red;
                        colRecFlagStr = "Don't Record";
                    }
                    break;
                default:
                    add = true;
                    break;
            }

            if (add)
            {
                ListViewItem lvi = new ListViewItem();

                if (descript != "")
                    lvi.Text = descript;
                else
                    lvi.Text = (AmpScriptId.ToString("D3") + "scr" + fileId.ToString("D4") + VoiceID.ToString("D5") + round.ToString("D2") + ".wav");                    
                lvi.ForeColor = color;
                lvi.SubItems.Add(colRecFlagStr);
                lstFiles.Items.Add(lvi);
            }
        }
    }

【问题讨论】:

  • 如果 dtList 是一个数据表,则 DataGridView 将更容易填充,尤其是。请阅读How to Ask 并使用tour

标签: c# listview


【解决方案1】:

我想通了。问题是这里的这条线......

lstFiles.Clear();

我的意思是清除项目,但它也清除了列。我把这条线改成了这个……

lstFiles.Items.Clear();

现在它可以按预期工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多