【问题标题】:WinForms ListView C#WinForms ListView C#
【发布时间】:2025-12-22 15:30:10
【问题描述】:

我正在使用的ListView 有两个问题。

我的ListView 设置为ListViewView.View = List,我正在通过ListView.Items.Add(string) 添加一些项目。

第一个,我注意到对于比ListView 本身的宽度更宽的文本项,没有水平滚动错误,我似乎找不到启用它的方法。

第二个是要选择一个项目,我需要选择项目本身的一部分,而不是项目所在的行。换句话说,如果我有一个长度非常小的项目,我可以' t单击该行上的任意位置来选择它,我必须单击

这是我看到的代码:

listView1.Items.Add("aaaabbbbccccddddffffeeeegggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvwwwwxxxxyyyyzzzz");
listView1.Items.Add("a");

从上图中可以看出,没有滚动条,Index[0] 上的文本长度比ListView 的宽度宽得多

同样在Index[1] 上,文本只是一个a,要选择它,我必须直接单击a 顶部,而不是该行中的任何其他位置。

有没有办法轻松解决这两个问题?

另外,我使用 ListView 的原因是我想将图像添加到项目中。

谢谢。

【问题讨论】:

  • 为什么需要 ListView?为什么不使用 ListBox?
  • 这是在列表模式下设置列表视图的副产品。如果您使用详细信息模式,则可以避免这种情况。
  • @YacoubMassad 原始问题最后说明了为什么要使用 ListView:我需要将图像放在行上的文本旁边。你不能(很容易)用 ListBox 做到这一点。
  • 我认为使用Detail 而不是List 作为View 会更适合您的需求。 ListView 有一个 FullRowSelect 属性可能会对您有所帮助。
  • 真实数据中不会有一两个空格来允许换行吗?

标签: c# winforms listview


【解决方案1】:

对于您的第二个问题,只需在属性中将 FullRowSelect 设置为 true 或者您可以执行 listview1.FullRowSelect = true;

【讨论】: