【问题标题】:Horizontal Listbox水平列表框
【发布时间】:2015-10-13 17:36:58
【问题描述】:

我在一个需要水平显示一些项目的项目中工作,这些项​​目就像列表框的一样,所以我可以在将项目添加到列表框之前更改项目的文本和属性。是可以制作像这个图这样的水平列表框吗? 图片来源:Horizontal ListView Xamarin.Forms

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

【问题讨论】:

  • 你想展示什么样的项目?文本?图片?
  • @RezaAghaei 这是文本..

标签: c# winforms listbox


【解决方案1】:

您也可以使用 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);
}

结果:

【讨论】:

    【解决方案2】:

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

    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.
    

    【讨论】:

    • lb.Height 设置大一点以允许滚动条和设置lb.ColumnWidth 也会有所帮助..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多