Prost način da se to uradi je da smanjiš širinu željene kolone na 0. (listView.Columns[x].Width = 0)
Problem sa ovakvim rešenjem je to što korisnik može mišem da razvuče nevedljivu kolonu i tako otkrije vrednost u njoj. Ja sam pokušavao da to sprečim pravljenjem sopstvene ListView kontrole koja nasleđuje od standardnog ListView-a i implementira WndProc:
Code:
protected override void WndProc(ref Message message)
{
const int WM_PAINT = 0xf;
switch (message.Msg)
{
case WM_PAINT:
if (this.View == View.Details && this.Columns.Count > 0)
{
foreach (ColumnHeader column in this.hiddenColumns)
{
column.Width = 0;
}
}
break;
}
base.WndProc(ref message);
}
Međutim, nisam bio zadovoljan rezultatom i digao sam ruke od skrivanja kolona već jednostavno rekreiram listu u zavisnosti od toga šta treba prikazati u datom momentu.