Как изменить размер элемента управления datagridview при изменении размеров формы - PullRequest
36 голосов
/ 18 ноября 2011

Я нашел много вопросов о том, как изменить размер формы при изменении размера дочернего элемента управления, но я пытаюсь сделать что-то гораздо более простое (возможно, такие простые люди даже не задают этого: |)

Я хотел бы автоматически изменить ширину моего datagridview, чтобы заполнить ширину формы. После простого размещения сетки данных в форме сетка остается того же размера при изменении размера формы. Это происходит даже тогда, когда я использую маленькую вещь с постоянным расстоянием, «соединяющую» элемент управления с границами формы.

Нужно ли обрабатывать какое-либо событие form.resize или есть свойство, которое я могу установить в VS?

Ответы [ 11 ]

46 голосов
/ 18 ноября 2011

Использовать контрольную привязку.Установите для свойства Anchor вашего GridView значение Top, Left, Right, и оно будет изменено в размере с контейнером.Если ваш GridView находится внутри какого-либо контейнера (например, Panel), то Panel также должен быть привязан.

21 голосов
/ 22 августа 2012

Установите свойство вашего DataGridView:

Anchor: Top,Left
AutoSizeColumn: Fill
Dock: Fill
9 голосов
/ 18 ноября 2011

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

5 голосов
/ 18 ноября 2011

У вас есть два варианта:

  • Первый вариант, Якорь
  • Второй вариант, Док

Найдите оба свойства и определите, какой из нихудовлетворить ваши потребности.

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.anchor.aspx

и

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock.aspx

4 голосов
/ 08 мая 2014

Свойство «Якорь» существует для любого контейнера: формы, панели, группового блока и т. Д.

Вы можете выбрать 1 сторону, например, слева или до всех четырех сторон.

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

Например, обзор данных, dgv1, находится в середине Form1. Ваш 'Якорь' слева и сверху от dgv1. Когда приложение запускается и происходит изменение размера, либо с разных разрешений экрана, либо с изменением размера формы, верхняя и левая стороны dgv1 изменятся соответственно, чтобы сохранить их расстояние от края From1. Нижняя и правая стороны не будут.

3 голосов
/ 18 ноября 2011

В конструкторе формы вы можете создать обработчик событий, например:

this.SizeChanged(frm_sizeChanged);

Затем создайте обработчик событий, который соответствующим образом изменяет размер сетки, например:

private void frm_sizeChanged(object sender, EventArgs e)
{
     dataGrid.Size = new Size(100, 200);
}

Замена этих чиселс чем угодно.

2 голосов
/ 08 июля 2016

Если вы хотите показать полный текст заголовков

это автоматически изменит размер столбцов, так что заголовки покажут полный текст заголовка.

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

для режима док-станции

Если вы хотите показать Dock Mode на вашей панели или в форме.

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
1 голос
/ 10 января 2014

Вы должны выбрать «Fill» в свойстве Dock.

1 голос
/ 06 декабря 2013

Для меня привязка работает, только если я установил ее со всех четырех сторон:

Закрепление: сверху, снизу, слева, справа

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

1 голос
/ 18 ноября 2011

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

...