在 Winforms 中,我想显示一个具有项目索引号和项目的列表框,如下所示。我已经浏览了许多 SO 链接和许多文章,其中大多数都使用 ListView 而不是 ListBox 并且也不是显示 List Item 索引,而是在其中显示 Image+ Item。我对列表视图没问题,但我的目标是显示项目及其相应的索引,并且在选择时它应该只给我项目。任何人都可以为我提供任何链接或想法来使用 C# 在 Winform 中实现这一点。
提前致谢。
您可以自定义您的列表框
以下链接将指导您正确的方向。
http://www.codeproject.com/Articles/15464/Extending-the-ListBox-to-show-more-complex-items
我认为您应该考虑将列表框上的 DrawMode 属性设置为 DrawMode.Manual 并处理代码中项目的绘制。
看看http://msdn.microsoft.com/en-us/library/system.windows.forms.drawmode.aspx
我认为您最好的选择是使用DataGridView
两列:
DataGridViewButtonColumn
, AutoSizeMode = 所有细胞DataGridViewTextBoxColumn
, ReadOnly = true, AutoSizeMode = Fill又RowHeadersVisible
和ColumnHeadersVisible
以假。结果:
代码:
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;
}