В моем проекте есть DataGridView с 52 столбцами, и некоторые столбцы не видны. Но я хочу, чтобы пользователь легко их видел. Поэтому я добавил кнопку, как вы видите на рисунке ниже. Это делает пять столбцов видимыми.
Но проблема при прокрутке: эта кнопка остается статичной в форме. Я хочу, чтобы эта кнопка была привязана к определенному заголовку столбца. Подвижный с заголовком столбца.
Поэтому я попытался поместить элементы управления DataGridView и Button на ту же панель, что и дочерние элементы. Это сработало, но прокрутка панели не так функциональна, как прокрутка DataGridView. Например, в панели прокрутка замороженных столбцов не работает.
Есть ли какое-нибудь решение для этого. Я хочу, чтобы пользователь легко делал столбцы видимыми или невидимыми, как Excel. нет необходимости использовать кнопки. Если есть какие-либо другие варианты, я заинтересован.

@AlexanderPetrov Извините, Winform.
@JayV Я имею в виду, что DataGridView не является гибким, как приложение Excel. В Excel вы можете выбрать несколько столбцов и легко показать/скрыть. Как я могу обеспечить эту гибкость в таблице DataGridView.
@ Джими, спасибо, чувак. Простите за поздний ответ. Вроде классно и полезно, попробую..





Я покажу пример того, как вы можете использовать контекстное меню для отображения и скрытия столбцов DataGridView.
Добавить меню в форму:
ContextMenuStrip columnMenu;
Создайте такое меню. В каждом столбце есть один пункт меню с флажком.
Конечно, вы можете создать и заполнить его вручную в дизайнере.
private void Form1_Load(object sender, EventArgs e)
{
columnMenu = new ContextMenuStrip();
foreach (DataGridViewColumn column in dataGridView.Columns)
{
var item = new ToolStripMenuItem();
item.Text = column.Name;
item.CheckOnClick = true;
item.Checked = true;
item.Click += Item_Click;
columnMenu.Items.Add(item);
}
}
При выборе пункта меню показать или скрыть столбец.
private void Item_Click(object sender, EventArgs e)
{
var item = (ToolStripMenuItem)sender;
dataGridView.Columns[item.Text].Visible = item.Checked;
}
Подпишите DataGridView на событие:
dataGridView.ColumnHeaderMouseClick += DataGridView_ColumnHeaderMouseClick;
В этом обработчике событий показать меню.
private void DataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
columnMenu.Show(MousePosition);
}
Спасибо чувак. Простите за поздний ответ. я буду использовать это.
@gokhan Вы написали «как Excel» - не могли бы вы добавить небольшой скриншот того, какие функции вы хотите скопировать из Excel?