WinForms 中的标题控件 - 任何这样的东西?

gno*_*sis 5 c# listview winforms

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

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

  1. 使用HeaderControl, 并向其添加列(我似乎找不到 WinForms 支持的标题控件)。

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

任何好的想法都非常感谢!

Jef*_*tes 4

HeaderControl到目前为止,.NET 框架中还没有WinForms(ListView使用该类ColumnHeader,但这仅对 .NET 有用ListView)。如果您仅针对 Microsoft Windows,则可以考虑包装 Win32 控件以便在 .NET 中使用,尽管我预计这将是一项艰巨的工作。

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

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

我认为第三个选项的创建相当简单,即使具有调整大小的能力,所以我建议采取这条路线(我什至可能会在今晚回家时自己尝试一下)。