WinForms中的头控制 - 任何这样的事情?

时间:2008-10-27 21:07:50

标签: c# winforms listview

我正在尝试使用Windows native(Theme-aware)标头控件来显示一些列标题。主要目的是避免手动绘制列标题并依赖本机支持的功能。

所以我想到的两个选项是:

  1. 使用HeaderControl,并为其添加列(我似乎无法找到WinForms支持的标头控件)。

  2. 使用ListView控件,并告诉它不显示任何行(或基本上将其高度设置为列标题的高度) - 无法找到任何方法来确定我应分配给哪个高度控制。

  3. 任何好的想法都非常赞赏!

1 个答案:

答案 0 :(得分:4)

到目前为止,.NET框架中的WinForms没有HeaderControlListView使用ColumnHeader类,但这仅适用于ListView)。如果您只是针对Microsoft Windows,那么您可以考虑将Win32控件包装在.NET中使用,尽管我希望这将是实质性的工作。

你的第二种选择是有效的可能性,即使它感觉有点笨拙。我可以看到在使列表正确调整大小以使标题和标题可见时出现的困难。

第三个选项是滚动您自己代表一列的HeaderButton(如ColumnHeader)并使用主题绘图调用来绘制它,然后将它们组合在FlowLayoutPanel中或TableLayoutPanel进入标题栏。如果你想调整大小,可以让HeaderButton有一个抓取区域,你可以拿起并改变它的宽度。

我认为第三种选择创建起来相当简单,即使具有尺寸调整能力,所以我建议采取这种方式(我甚至可以在今晚回家时自己动手)。