Простой ответ - «да».
В первом случае вам нужно установить для свойства AutoGenerateColumns
DataGridView
значение false, тогда вы можете контролировать, какие столбцы будут отображаться.
В прошлом я создавал контекстное меню для DGV:
ContextMenu = new ContextMenu();
foreach (var column in this.dataGridView.Columns)
{
this.AddContextMenuItem(ContextMenu, column.Name, column.Visible);
}
private void AddContextMenuItem(ContextMenu contextMenu,
string columnName,
bool visible)
{
var menuItem = new MenuItem(columnName,
new EventHandler(this.ContextMenu_onClick)) { Checked = visible };
contextMenu.MenuItems.Add(menuItem);
}
Затем при переключении параметра меню измените свойство Visible
столбца.
private void ContextMenu_onClick(object sender, EventArgs e)
{
var clicked = sender as MenuItem;
if (clicked != null)
{
// Update the state of the context menu
clicked.Checked = !clicked.Checked;
// Update the visibity of this column
this.dataGridView.Columns[clicked.Text].Visible = clicked.Checked;
}
}