public void SetColInView(Collumns col, Boolean remove) {
if (remove) {
var theColumn = this.Collumns.FirstOrDefault(s => s.pkey.fmtid == col.pkey.fmtid && s.pkey.pid == col.pkey.pid);
if (theColumn != null) {
var colIndex = this.Collumns.IndexOf(theColumn);
this.Collumns.Remove(theColumn);
User32.SendMessage(this.LVHandle, MSG.LVM_DELETECOLUMN, colIndex, 0);
if (theColumn.ID == this.LastSortedColumnId) {
User32.SendMessage(this.LVHandle, MSG.LVM_SETSELECTEDCOLUMN, -1, 0);
}
}
} else if (!this.Collumns.Any(s => s.pkey.fmtid == col.pkey.fmtid && s.pkey.pid == col.pkey.pid)) {
this.Collumns.Add(col);
var column = col.ToNativeColumn(this.View == ShellViewStyle.Details);
var colIndex = this.Collumns.Count - 1;
User32.SendMessage(this.LVHandle, MSG.LVM_INSERTCOLUMN, colIndex, ref column);
if (col.ID == this.LastSortedColumnId) {
this.SetSortIcon(colIndex, this.LastSortOrder);
User32.SendMessage(this.LVHandle, MSG.LVM_SETSELECTEDCOLUMN, colIndex, 0);
}
if (this.View != ShellViewStyle.Details) {
this.AutosizeColumn(this.Collumns.Count - 1, -2);
}
}
var headerhandle = User32.SendMessage(this.LVHandle, MSG.LVM_GETHEADER, 0, 0);
for (var i = 0; i < this.Collumns.Count; i++) {
this.Collumns[i].SetSplitButton(headerhandle, i);
}
this.OnListViewCollumnsChanged?.Invoke(this, new CollumnsChangedArgs(remove));
}