C # Winforms изменить размер DataGridView, чтобы заполнить ширину, но с режимом переноса, чтобы отключить (разрешить прокрутку, если требуется) - PullRequest
1 голос
/ 13 января 2012

Я новичок в Winforms, и недавно у меня возникла ситуация. Мой клиент предпочитает, чтобы каждая запись отображалась одной строкой, и хочу использовать ползунок, если в ячейке больше содержимого. Кроме того, он также хочет растянуть ширину столбца «Имя», если общая ширина всех столбцов меньше ширины DataGridView.

Я уже установил для RowsDefaultCellStyle.WrapMode и ColumnHeadersDefaultCellStyle.WrapMode значение false вместе с DataGridViewAutoSizeColumnsMode.AllCells. Но он не растягивает столбец «Имя», хотя я установил его вручную.

1 Ответ

1 голос
/ 13 января 2012

Я думаю, у вас есть правильная идея, но есть небольшая изюминка с тем, как работает Fill.Вот пример кода, который почти сделает то, что вы хотите, и похоже, что вы уже почти все это сделали:

public Form1()
{
    InitializeComponent();

    this.dataGridView1.RowsDefaultCellStyle.WrapMode = DataGridViewTriState.False;
    this.dataGridView1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
    this.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

    this.dataGridViewColumnName.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    this.dataGridViewColumnName.MinimumWidth = 60;
}

Единственный улов здесь - я установил MinimumWidth в столбце Name, потому чтонет DataGridViewAutoSizeColumnMode, как AllCellsFillRemaining.Если вы не установите MinimumWidth для столбца, установленного на Fill, он может быть уменьшен до нескольких пикселей, если все остальные столбцы вытесняют его.Чтобы по-настоящему понять поведение, к которому вы стремитесь, я считаю, что вам нужно переопределить поведение автоматического размера.

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