【问题标题】:Numbering each row in a ListView (C#)对 ListView 中的每一行进行编号 (C#)
【发布时间】:2014-07-11 02:09:31
【问题描述】:

修订:我有一个 Windows 窗体应用程序并添加了一个 ListView。我可以将项目添加到我的列表视图中,但我想对具有项目的每一行进行编号。我希望这些数字出现在第 2 列中。

        if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            int initialID = 2;

            //Change button text.
            button4.Text = ("Clear/Add Fonts");

            //For each string in the open file dialog array.
            foreach (string fontFileName in ofd.SafeFileNames)
            {
                //Add a line in the list view for each selected file. Don't allow for the same file to appear twice.
                if (listView1.FindItemWithText(fontFileName) == null)
                {
                    for (int i = 0; i < initialID; i++)
                        listView1.Items.Add(fontFileName).SubItems.Add((i).ToString());
                }
            }
        }

抱歉,修改后的变化有些戏剧性。我现在有数字出现在字体 ID 下,但现在我似乎无法让它增加。我想我已经很接近了。

答案: 以下是我如何实施 Cyral 的建议:

if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                int initialID = 1;
                int count = initialID;

                //Change button text.
                button4.Text = ("Clear/Add Fonts");

                //For each string in the open file dialog array.
                foreach (string fontFileName in ofd.SafeFileNames)
                {
                    //Add a line in the list view for each selected file. Don't allow for the same file to appear twice.
                    if (listView1.FindItemWithText(fontFileName) == null)
                    {
                            listView1.Items.Add(fontFileName).SubItems.Add(count++.ToString());
                    }
                }
            }
            else

【问题讨论】:

  • lvi 似乎没有附加任何东西

标签: c# listview


【解决方案1】:

老问题:

您需要在刚刚添加的ListViewItem 上设置SubItems

lvi.Text = fontFileName;
lvi.SubItems.Add(initialID.ToString());
listView1.Items.Add(lvi);

新问题:

您的计数器循环将不起作用,因为它每次都会重置,并且因为您的 InitialID 为 1,i 将始终为 0。

我建议使用以下方法:

int initialID = 1; //Make a constant and put it somewhere
int count = initialID; //Will count how many items are added (Could also be done with a for loop with a condition)
foreach (string fontFileName in ofd.SafeFileNames)
{
    //Add a line in the list view for each selected file. Don't allow for the same file to appear twice.
    if (listView1.FindItemWithText(fontFileName) == null)
    {
        ListViewItem lvi = new ListViewItem(fontFileName);
        lvi.SubItems.Add(i.ToString());
        listView1.Items.Add(lvi);
        count++;
    }
}

【讨论】:

  • 我不得不清理代码中的一些内容。我在一行中完成了子项任务:listView1.Items.Add(fontFileName).SubItems.Add((i).ToString()); 我现在正在处理增量。感谢您的帮助。
  • 知道了!我将最终代码添加到“答案”下的原始帖子中。我真的很感谢你的帮助。作为新人,我往往会招来很多傲慢。有些人只是编辑我的语法。呃。
猜你喜欢
  • 1970-01-01
  • 2013-05-02
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多