автоматическое изменение размера сетки для отображаемых ячеек

#c# #datagridview #scroll

#c# #datagridview #прокрутите #прокрутка

Вопрос:

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

 Grid.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
Grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
  

но из-за этих свойств gridview занимает слишком много времени для загрузки, потому что моя база данных слишком большая.

так что мне действительно понравилось,

 private void Form4_Load(object sender, EventArgs e)
        {
            Grid.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
            Grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
        }

private void Grid1_Scroll(object sender, ScrollEventArgs e)
        {

            Grid1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedHeaders;
            Grid1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
        }
  

но когда я нажимаю кнопку page down с клавиатуры, это работает нормально, но при прокрутке с помощью мыши загрузка данных занимает немного больше времени, а полоса прокрутки gridview отображается ненормально.

пожалуйста, кто-нибудь, помогите мне.

Ответ №1:

С помощью параметра AutoSizeRowsMode вы задаете поведение сетки. Вместо того, чтобы делать это дважды, в Grid1_Scroll случае попробуйте выполнить действие настройки:

 Grid1.AutoResizeRows(DataGridViewAutoSizeRowsMode.DisplayedCells);
  

Вы также можете рассмотреть следующий Load метод:

 private void Form4_Load(object sender, EventArgs e)
{
    Grid1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
    Grid1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
    Grid1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
}
  

Для настройки строк требуется время только один раз, при загрузке.