نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
اینطوری CheckListBox را مقداردهی کن:

public FrmMain()
{
InitializeComponent();

foreach (DataGridViewColumn col in dataGridView1.Columns)
{
checkedListBox1.Items.Add(col.Name);
checkedListBox1.SetItemCheckState(checkedListBox1. Items.Count - 1, CheckState.Checked);
}
}

به صورت زیر هم نمایش یا عدم نمایش را تنظیم کن(آنهایی که تیک خوردن نمایش داده میشن). در ضمن برای این جور کارها از حلقه استفاده نکن، رویداد ItemCheck برای همین جور کارهاست:

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
dataGridView1.Columns[checkedListBox1.Items[e.Index].ToString()].Visible = Convert.ToBoolean(e.NewValue);
}
دوست عزیز این دستورات چک لیست باکس رو درست مقدار دهی میکنه ولی رویداد Item Check رو تشخیص نمیده و ستون ها رو با برداشتن تیک جلوی اسمشون غیر فعال نمی کنه.