1

在 Winforms 中,我想显示一个具有项目索引号和项目的列表框,如下所示数字。我已经浏览了许多 SO 链接和许多文章,其中大多数都使用 ListView 而不是 ListBox 并且也不是显示 List Item 索引,而是在其中显示 Image+ Item。我对列表视图没问题,但我的目标是显示项目及其相应的索引,并且在选择时它应该只给我项目。任何人都可以为我提供任何链接或想法来使用 C# 在 Winform 中实现这一点。

提前致谢。

4

3 回答 3

0

您可以自定义您的列表框

以下链接将指导您正确的方向。

http://www.codeproject.com/Articles/15464/Extending-the-ListBox-to-show-more-complex-items

于 2013-01-28T11:45:36.110 回答
0

我认为您应该考虑将列表框上的 DrawMode 属性设置为 DrawMode.Manual 并处理代码中项目的绘制。

看看http://msdn.microsoft.com/en-us/library/system.windows.forms.drawmode.aspx

于 2013-01-28T11:58:36.427 回答
0

我认为您最好的选择是使用DataGridView两列:

  • DataGridViewButtonColumn, AutoSizeMode = 所有细胞
  • DataGridViewTextBoxColumn, ReadOnly = true, AutoSizeMode = Fill

RowHeadersVisibleColumnHeadersVisible以假。结果:

在此处输入图像描述

代码:

string[] members = { "Beverages", "Condiments", "Confections" };
dataGridView1.DataSource = members.Select((x, i) => new { Value = x, Index = i })
                                  .ToList();

您还需要将列设置DataPropertyName为索引和值。

更新(对于 .NET 2.0):

string[] members = { "Beverages", "Condiments", "Confections" };
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = members;

订阅 CellFormatting 事件:

void dataGridView1_CellFormatting(object sender, 
                                  DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        e.Value = e.RowIndex;
        return;
    }

    e.Value = dataGridView1.Rows[e.RowIndex].DataBoundItem;
}
于 2013-01-28T12:31:25.227 回答