Michael Waguih Ответов: 3

Изменение ширины столбца datagridview автоматически при изменении другого столбца вручную


Всем привет,

У меня их два DataGridView пришвартовался в моем Form в котором я устанавливаю его AutoSizeMode к Fill Я хочу автоматически изменить второе DataGridView колонка Width то же самое, что и в первой колонке width менять.

Я пробовал эти два случая:

private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
    dataGridView2.Columns[e.Column.Index].FillWeight = e.Column.FillWeight;
}


private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
    dataGridView2.Columns[e.Column.Index].Width = e.Column.Width;
}


В обоих случаях эта ошибка появляется при загрузке формы, содержащей эти два DataGridView :

Эта операция не может быть выполнена при изменении размера автоматически заполняемого столбца.

Пожалуйста, кто-нибудь может мне помочь ?

Заранее спасибо,
:)

3 Ответов

Рейтинг:
2

Member 12218384

dataGridView1.AutoResizeColumns();
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;


#realJSOP

Чувак. Этому вопросу уже почти 6 лет. Обратить внимание.

Рейтинг:
1

Andrew Dzimano

попробуйте этот код

foreach (DataGridViewColumn dcol in dataGridView1.Columns)
            {
                dcol.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
            }


[no name]

последнее сообщение было 19 февраля ' 11. Прошло уже больше года.

Рейтинг:
0

Henry Minute

Сообщение об ошибке говорит вам, почему это не удается. У вас есть AutoSizeMode, установленный для заполнения, и поэтому вы не можете установить ширину вручную.

Вам нужно будет изменить AutoSizeMode в NotSet или None на сетке, размер которой вы хотите установить вручную.


Michael Waguih

Когда я делаю это, второй DataGridView никогда не меняет свой размер, и каждый столбец имеет размер ширины, установленный для каждого столбца навсегда

Henry Minute

Я только что сделал тестовый проект с двумя датагридами, в первом из которых установлен AutoSizeColumnsMode для заполнения, а во втором - none. Я использовал второй из ваших фрагментов кода. У Dgv есть свои Anchor установите их влево|вверх|вправо так, чтобы они следовали ширине формы. Когда я запускаю его и настраиваю ширину формы, столбцы в сетке 2 подстраиваются под столбцы в сетке 1.

Я могу только предположить, что в вашем случае размеры столбцов сетки 1 устанавливаются до того, как будет подключен обработчик событий. В качестве эксперимента попробуйте установить якорь, как описано выше, и запустить приложение, а затем изменить размер формы. Если сетка 2 действительно подстраивается под соответствие, то я прав.

Michael Waguih

Я уже вычла из моей элементов datagridview сделал это отличается от выхода на якоре

Henry Minute

Пока они изменяют размер по мере изменения размера формы, ничего другого.