C# 水平列表框

C# 水平列表框,c#,winforms,listbox,C#,Winforms,Listbox,我在一个项目中工作,该项目需要水平显示一些项目,这些项目类似于列表框,因此我可以在将这些项目添加到列表框之前更改这些项目的文本和属性。。可以像这样制作水平列表框吗? 图像来源: 编辑;我正在使用Windows窗体应用程序,虽然我不确定这是否符合您的要求,但您可以尝试以下方法: ListBox lb = new ListBox(); lb.MultiColumn = true; //If this is set to false, you see vertical listbox. lb.Item

我在一个项目中工作,该项目需要水平显示一些项目,这些项目类似于列表框,因此我可以在将这些项目添加到列表框之前更改这些项目的文本和属性。。可以像这样制作水平列表框吗? 图像来源:


编辑;我正在使用Windows窗体应用程序

,虽然我不确定这是否符合您的要求,但您可以尝试以下方法:

ListBox lb = new ListBox();
lb.MultiColumn = true; //If this is set to false, you see vertical listbox.
lb.Items.AddRange(new object[] { 1, 2, 3, 4, 5, 6, 7, 8 });
lb.Height = 50;
lb.Width = 200;
this.Controls.Add(lb); //I took this dynamic listbox approach just for demo purpose.

您还可以使用ListView控件:

listView1.View = View.Tile;
listView1.Alignment = ListViewAlignment.Left;
listView1.OwnerDraw = true;
listView1.DrawItem += listView1_DrawItem;
listView1.TileSize = new Size(48,
  listView1.ClientSize.Height - (SystemInformation.HorizontalScrollBarHeight + 4));
for (int i = 0; i < 25; ++i) {
  listView1.Items.Add(new ListViewItem(i.ToString()));
}

void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) {
  Color textColor = Color.Black;
  if ((e.State & ListViewItemStates.Selected) != 0) {
    e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds);
    textColor = SystemColors.HighlightText;
  } else {
    e.Graphics.FillRectangle(Brushes.White, e.Bounds);
  }
  e.Graphics.DrawRectangle(Pens.DarkGray, e.Bounds);

  TextRenderer.DrawText(e.Graphics, e.Item.Text, listView1.Font, e.Bounds,
                        textColor, Color.Empty,
                        TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
}
listView1.View=View.Tile;
listView1.Alignment=ListViewAlignment.Left;
listView1.OwnerDraw=true;
listView1.DrawItem+=listView1\u DrawItem;
listView1.TileSize=新尺寸(48,
listView1.ClientSize.Height-(SystemInformation.HorizontalScrollBarHeight+4));
对于(int i=0;i<25;++i){
添加(新的ListViewItem(i.ToString());
}
void listView1\u DrawItem(对象发送者,DrawListViewItemEventArgs e){
颜色文本颜色=颜色。黑色;
如果((e.State&listViewItemState.Selected)!=0){
e、 Graphics.FillRectangle(SystemBrush.Highlight,e.Bounds);
textColor=SystemColors.HighlightText;
}否则{
e、 图形。填充矩形(画笔。白色,e。边界);
}
e、 图形.绘图矩形(Pens.DarkGray,e.Bounds);
TextRenderer.DrawText(e.Graphics、e.Item.Text、listView1.Font、e.Bounds、,
textColor,Color,空,
TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
}
结果:


您想展示什么样的物品?文本?图像?@RezaAghaei它是文本..设置
lb.Height
稍微大一点以允许滚动条,设置
lb.ColumnWidth
也会有帮助。。