要添加到ListView但不可见的项目

时间:2018-02-02 00:56:22

标签: c# listview

我试图将项目添加到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);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

我明白了。这个问题就在这里......

lstFiles.Clear();

我的意思是只清除这些项目,但它也清除了列。我把线改成了......

lstFiles.Items.Clear();

现在它按预期工作。