Как разрешить пользователям скрывать столбцы в dataGridView? - PullRequest
0 голосов
/ 29 января 2020

У меня есть приложение WinForms с dataGridView, которое имеет 26 столбцов и заполнено данными из базы данных. Как я могу позволить пользователям скрывать столбцы, которые они не хотят видеть, и показывать их позже? Я знаю, как это сделать программно, но вопрос в том, как это сделать пользователю. Вот мои плохие идеи:

  1. Список флажков с каждым столбцом, который нужно щелкнуть там - это плохо, потому что список будет слишком длинным и не поместится внутри формы.

  2. Флажок над каждым заголовком, но я не знаю, как заставить эти флажки "прилипать" и прокручивать по горизонтали заголовки.

  3. Нажатие на заголовок - это хорошо работает для сокрытия, но нет способа снова отобразить этот столбец.

Так, каково было бы здесь решение?

1 Ответ

0 голосов
/ 30 января 2020

Лучшее решение - скрыть столбцы после двойного щелчка по заголовку и добавления скрытых столбцов во всплывающее меню. Всплывающее меню содержит только скрытые столбцы, поэтому оно не слишком длинное. Нажатие на элемент всплывающего меню удаляет его из меню и показывает столбец.

screen of the program

Код:

private void DataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                string column = dataGridView1.Columns[e.ColumnIndex].Name;
                dataGridView1.Columns[column].Visible = false;
                contextMenuStrip1.Items.Add(column);
            }
        }

private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            var menuText = e.ClickedItem.Text;
            dataGridView1.Columns[menuText].Visible = true;
            contextMenuStrip1.Items.Remove(e.ClickedItem);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...