Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > DataGridView, видимость первой строки


Автор: lexem78 16.10.2011, 16:18
Здравствуйте!
Я пользуюсь DataGridVeiw. Каждую видимую строку можно скрыть:
Код

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 3 && e.RowIndex < dataGridView1.RowCount)
            {
                dataGridView1.CurrentCell = null;
                dataGridView1.Rows[e.RowIndex].Visible = false;
            }

            AdjustGridHeight();
        }

а потом, по необходимости нажатием кнопки "Show hidden" вернуть всё назад:
Код

        private void btnShowHidden_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                row.Visible = true;
            }

            AdjustGridHeight();
        }
 
После каждого действия ("hide row" или "Show hidden" ) я пересчитываю высоту грида:
Код

        private void AdjustGridHeight()
        {
            int listHeight = (dataGridView1.Rows[0].Height * dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Visible) + dataGridView1.ColumnHeadersHeight);
            this.dataGridView1.Height = listHeight;
        }


Проблема в том, что когда я делаю "Hide" первой строке, то потом она уже не появляется, не смотря на то что высота грида пересчитывается правильно. Происходит только с первой строкой

Автор: boevik 21.10.2011, 21:44
Первая строка есть, только она находится над видимой зоной.
Поставь 
Код

dataGridView1.FirstDisplayedCell = dataGridView1.Rows[0].Cells[0]; 

в функции btnShowHidden_Click, последней строкой.

Автор: lexem78 24.10.2011, 09:27
Спасибо! Рабоатет! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)