在Winforms中,我想显示一个列表框,其中包含项目索引编号和项目,完全如下面的所示。我已经浏览了很多SO链接以及许多文章,其中大多数都使用ListView而不是ListBox,而不是显示List Item索引,它们在其中显示Image + Item。我对listview很满意,但我的目标是显示带有相应索引的项目,并选择它应该只给我项目。任何人都可以使用C#在Winform中为我提供任何链接或想法。
提前致谢。
答案 0 :(得分:1)
您可以自定义列表框
以下链接将指导您正确的方向。
http://www.codeproject.com/Articles/15464/Extending-the-ListBox-to-show-more-complex-items
答案 1 :(得分:1)
我认为您应该考虑将列表框上的DrawMode属性设置为DrawMode.Manual并处理代码中项目的绘制。
查看http://msdn.microsoft.com/en-us/library/system.windows.forms.drawmode.aspx
答案 2 :(得分:1)
我认为最好的选择是使用DataGridView
和两列:
DataGridViewButtonColumn
,AutoSizeMode = AllCells DataGridViewTextBoxColumn
,ReadOnly = true,AutoSizeMode = Fill 同样RowHeadersVisible
和ColumnHeadersVisible
为false。结果:
代码:
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;
}