I have a WinForms application with a dataGridView which has 26 columns and is filled with data from a database. How can I allow users to hide the columns they don't want to see and show them again later? I know how to do it programmatically, but the question is how should the user do it. Here are my bad ideas:
A list of checkboxes with each column to be clicked there - this is bad because the list would be too long and won't fit inside the form.
A checkbox over each header, but I don't know how to make these checkboxes "stick" and horizontally scroll with the headers.
Clicking on a header - this works well for hiding, but there is no way to show this column again.
So what would be the solution here?

ContextMenuStripthat includesToolStripMenuItemfor each column.Checkto show,UnCheckto hide.