63 lines
1.6 KiB
C#
63 lines
1.6 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Server.Helper;
|
|
|
|
internal class AeroListView : ListView
|
|
{
|
|
private const uint WM_CHANGEUISTATE = 295u;
|
|
|
|
private const short UIS_SET = 1;
|
|
|
|
private const short UISF_HIDEFOCUS = 1;
|
|
|
|
private readonly IntPtr _removeDots = new IntPtr(MakeWin32Long(1, 1));
|
|
|
|
private ListViewColumnSorter LvwColumnSorter { get; set; }
|
|
|
|
public static int MakeWin32Long(short wLow, short wHigh)
|
|
{
|
|
return (wLow << 16) | wHigh;
|
|
}
|
|
|
|
public AeroListView()
|
|
{
|
|
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, value: true);
|
|
LvwColumnSorter = new ListViewColumnSorter();
|
|
base.ListViewItemSorter = LvwColumnSorter;
|
|
base.View = View.Details;
|
|
base.FullRowSelect = true;
|
|
}
|
|
|
|
protected override void OnHandleCreated(EventArgs e)
|
|
{
|
|
base.OnHandleCreated(e);
|
|
if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major >= 6)
|
|
{
|
|
NativeMethods.SetWindowTheme(base.Handle, "explorer", null);
|
|
}
|
|
if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major >= 5)
|
|
{
|
|
NativeMethods.SendMessage(base.Handle, 295u, _removeDots, IntPtr.Zero);
|
|
}
|
|
}
|
|
|
|
protected override void OnColumnClick(ColumnClickEventArgs e)
|
|
{
|
|
base.OnColumnClick(e);
|
|
if (e.Column == LvwColumnSorter.SortColumn)
|
|
{
|
|
LvwColumnSorter.Order = ((LvwColumnSorter.Order != SortOrder.Ascending) ? SortOrder.Ascending : SortOrder.Descending);
|
|
}
|
|
else
|
|
{
|
|
LvwColumnSorter.SortColumn = e.Column;
|
|
LvwColumnSorter.Order = SortOrder.Ascending;
|
|
}
|
|
if (!base.VirtualMode)
|
|
{
|
|
Sort();
|
|
}
|
|
}
|
|
}
|