Как скрывать и отображать любой столбец, независимо от первого столбца?

Есть datagridview с созданными вручную столбцами. (с программным добавлением сто тоже самое)
При загрузке формы происходит sql запрос в базу MS Access и последующее добавление в datagridview. С этим все хорошо, тут вопросов нет.
Хочу чтоб во время пользования программы, можно было просто скрывать некоторые столбцы в datagridview посредством checkbox.
Проблема в том, что нельзя просто взять и скрыть, например, 3 столбец, при этом, не трогая первый столбец.
Для этого нужно сначала скрыть самый первый столбец и после этого уже можно скрывать остальные. Точно также и с обратным их отображением.
как сделать так, чтобы можно было скрывать и отображать любой столбец, независимо первого столбца?

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

sql запрос

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Tutors.mdb";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
    
string query = "SELECT Факультет.[Название факультета], Группа.[Номер группы], 
         Тьюторы.ФИО, Тьюторы.Факультет, Тьюторы.Группа, Тьюторы.Курс, Тьюторы.[Номер телефона]"
         +"FROM(Факультет INNER JOIN Группа ON Факультет.[ID Факультета] = Группа.[ID факультета]) 
         INNER JOIN Тьюторы ON Группа.[ID группы] = Тьюторы.[ID Группы первокурсников]";
    
OleDbCommand oleDbCommand = new OleDbCommand(query, connection);
OleDbDataReader reader = oleDbCommand.ExecuteReader();
    
if (reader.HasRows == false)
{
    MessageBox.Show("Данные не найдены!", "Ошибка");
    Close();
}
else
{
    while (reader.Read())
    {
        dataGridView1.Rows.Add(reader["Название факультета"], reader["Номер группы"], 
                 reader["ФИО"], reader["Факультет"], reader["Группа"], reader["Курс"], 
                 reader["Номер телефона"]);
    }
}
reader.Close();
connection.Close();

обработчики событий checkBox'ов

private void checkBoxFacultyFresman_CheckedChanged(object sender, EventArgs e)
{
    if (checkBoxFacultyFresman.Checked == true) { dataGridView1.Columns[0].Visible = true; }
    else dataGridView1.Columns[0].Visible = false;
}

private void checkBoxGroupFreshman_CheckedChanged(object sender, EventArgs e)
{
    if (checkBoxFacultyFresman.Checked == true) { dataGridView1.Columns[1].Visible = true; }
    else dataGridView1.Columns[1].Visible = false;
}

private void checkBoxNameTutor_CheckedChanged(object sender, EventArgs e)
{
    if (checkBoxFacultyFresman.Checked == true) { dataGridView1.Columns[2].Visible = true; }
    else dataGridView1.Columns[2].Visible = false;
}

private void checkBoxFacultyTutor_CheckedChanged(object sender, EventArgs e)
{
    if (checkBoxFacultyFresman.Checked == true) { dataGridView1.Columns[3].Visible = true; }
    else dataGridView1.Columns[3].Visible = false;  
}

private void checkBoxGroupFaculty_CheckedChanged(object sender, EventArgs e)
{
    if (checkBoxFacultyFresman.Checked == true) { dataGridView1.Columns[4].Visible = true; }
    else dataGridView1.Columns[4].Visible = false;
}

private void checkBoxCourseTutor_CheckedChanged(object sender, EventArgs e)
{
    if (checkBoxFacultyFresman.Checked == true) { dataGridView1.Columns[5].Visible = true; }
    else dataGridView1.Columns[5].Visible = false;
}

private void checkBoxNamberTel_CheckedChanged(object sender, EventArgs e)
{
    if (checkBoxFacultyFresman.Checked == true) { dataGridView1.Columns[6].Visible = true; }
    else dataGridView1.Columns[6].Visible = false;
}

Ответы (0 шт):