Этот код датируется более ранней версией Vista и больше не работает с новым визуальным стилем Vista для элементов управления заголовками.Вам также нужно будет отключить визуальный стиль рендеринга.Он также не будет работать в 64-битном режиме, обычном в наши дни.Еще один побочный эффект заключается в том, что пользователь больше не получает визуальную обратную связь при наведении на заголовок столбца, неизбежный побочный эффект отключения флага стиля HDS_BUTTON.
Anyhoo, вот код, который заставляет заголовки выглядеть плоскими.Добавьте новый класс в ваш проект и вставьте код, показанный ниже.Компиляция.Перетащите новый элемент управления из верхней части панели инструментов на форму.
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
class FlatListView : ListView {
public FlatListView() {
this.HeaderStyle = ColumnHeaderStyle.Nonclickable;
}
protected override void OnHandleCreated(EventArgs e) {
if (this.View == View.Details) {
IntPtr hHeader = SendMessage(this.Handle, LVM_GETHEADER, IntPtr.Zero, IntPtr.Zero);
SetWindowTheme(hHeader, "", "");
}
base.OnHandleCreated(e);
}
private const int LVM_GETHEADER = 0x1000 + 31;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
[DllImport("uxtheme.dll")]
private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
}