右对齐Listview中的列

时间:2016-06-24 13:10:17

标签: c# winforms

我希望第一列左侧有一些空格,您可以单击并按住以选择多个Listview项目。在此picture中,您可以在第5列右侧看到自动生成的“空”列。有没有办法将该“空”列移到左侧?

我不想对齐内容本身或添加其他列。两者都无法解决从左侧选择项目的问题。

1 个答案:

答案 0 :(得分:1)

  

我希望第一列左侧有一些空格,您可以单击并按住以选择多个Listview项目。

我真的不明白为什么这是必要的。您只需单击第一列中的单元格并向右拖动即可。这将在多个列中选择多个项目。

如果你想这样做,你可以通过在第一个位置添加一个空白列,以你想要的任何宽度来实现。添加项目时,将它们添加到第二列,将第一列留空。

  

在此图片中,您可以看到第5列右侧自动生成的“空”列。有没有办法将“空”列移到左侧?

这不完全是什么。它只是一个没有列的死区。所以不,没有办法把它移到左边。从左侧开始插入列。

...也就是说,除非你通过滥用Windows从右到左的布局支持控件来破解它。将控件的RightToLeft属性设置为Yes,将其RightToLeftLayout属性设置为True。现在将从右侧插入列。这可能会产生其他不良影响;你需要彻底测试。并确保在通常使用从右到左布局的系统上将其恢复为从左到右的布局模式。

  

我不想对齐内容本身或添加其他列。两者都无法解决从左侧选择项目的问题。

是的,当然添加另一列就可以做到这一点。或者我完全不知道你的意思是“[能够从左侧选择项目”。

现在我已经更好地了解了您要做的事情,我的建议是缩进第一列中的项目一定数量。 ListView支持缩进,但它需要将ImageList附加到控件。如果没有ImageList,它只会忽略缩进设置。但如果您不使用图标,ImageList不必实际包含任何图像。一个空的“虚拟”ImageList工作正常。

以下是步骤(顺序并不重要,您可以在设计器中直观地或通过代码以编程方式执行此操作):

  1. 创建ListView控件。
  2. View属性设置为Details。
  3. 向ListView添加一些列。
  4. 向表单添加新的ImageList。
  5. 设置ListView控件的SmallImageList属性以引用刚刚添加的ImageList。
  6. 将一些项目添加到ListView。
  7. 对于每个项,请设置其IndentCount属性。
  8. IndentCount设置为1可能就足够了。它实际上是以ImageList的ImageSize属性的倍数来衡量的(由于这是一个小图像列表,因此通常为16×16,但在DPI设置较高时可能会更大)。如果需要对缩进宽度进行更精细的控制,可以将ImageList的ImageSize属性设置为1×1。然后IndentCount将以单个像素为单位进行测量。