【问题标题】:How to add spaces between items in a listbox如何在列表框中的项目之间添加空格
【发布时间】:2014-07-18 10:21:52
【问题描述】:

有没有办法在 Windows 窗体上的列表框项之间添加空格?

我已经搜索了很多,但没有找到解决方案。

我的意思是这样的:

listBox1.ColumnSpace = Value;

喜欢这张图片:

无需添加新项目来腾出空间。

感谢您的帮助

【问题讨论】:

  • 空间是什么意思?列表框项的高度?
  • 查看this question 如果是winforms,如果是WPF,试试Margin 或Padding。但请澄清您的问题。
  • 它在 Windows 窗体上
  • 使用 ListView 代替!您可以在此处添加图像列表并根据自己的喜好设置图像高度。您不需要实际分配图像。 ListBox的ItemHeight是从fontSize派生而来的,所以不能直接改变。

标签: c# winforms listbox


【解决方案1】:

我会说您需要所有者绘制该项目。您必须将DrawMode 属性更改为OwnerDrawFixed 才能使用自定义ItemHeight。然后,您需要自己绘制这些项目。将处理程序分配给DrawItem 事件以执行此操作。

【讨论】:

  • 有没有办法在不绘制的情况下编辑 ItemHeight ?
  • 不是根据文档,没有。您可以更改ItemHeight,但不会影响显示。为此,您需要所有者绘制。
  • 错了。有一种方法。我在上面概述了它。正确的问题是:所以没有办法我喜欢在windows窗体上添加空间? :-)
  • 也许你应该重新表述你的问题,并确保添加你想要达到的目标。这将帮助您获得更好的答案。
  • 查看SelectedIndexSelectedItem 属性。
【解决方案2】:

使用WPF,您可以在项目上使用填充,例如:

listBox1.Items.Add(new ListBoxItem { Padding = new Thickness(0, 10, 0, 10), Content = "Item 1" });
listBox1.Items.Add(new ListBoxItem { Padding = new Thickness(0, 10, 0, 10), Content = "Item 2" });
listBox1.Items.Add(new ListBoxItem { Padding = new Thickness(0, 10, 0, 10), Content = "Item 3" });

或者使用一个样式在所有项目上设置这个。

【讨论】:

  • 如果你有一个项目模板会起作用 - 否则它只会在列表框的边框和项目之间添加空间,而不是项目本身,对吧?
  • 是的,Thorsten,我应该说在项目上设置填充;我已经编辑了我的答案。
  • 但是我找不到填充
  • 对不起,我现在看到你已经指定了 WinForms - 这个答案对 WPF 有效
猜你喜欢
  • 2023-01-12
  • 2013-02-24
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2015-03-20
相关资源
最近更新 更多