Как увеличить DataGridView при максимизации формы?

Chimera_

Как увеличить DataGridView при максимизации формы? Как подстроить расположение и размеры элементов (GroupBox, ComboBox, DataGridView и др.) под разные размеры формы? Как это перерассчитывается? У моих юзеров моники 17-24 дюйма, надо, чтобы у всех все корректно отображалось. Буду благодарна за любой совет
5 ответов

Chimera_

навскидку - это перейти на wpf. Это позволит привязывать элементы интерфейса к границам к формы и при изменении размеров - они сами перестраиваются.


Chimera_

попробуйте свойства Dock и Anchorв крайнем случае можно так:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
 
namespace pros
{
    public class Program:Form
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Program());
        }
        DataGridView dgv = new DataGridView();
        Program()
        {
            this.Resize += new EventHandler(Program_Resize);
            dgv.Parent = this;
            dgv.Bounds = new Rectangle(10, 10, this.Width /3, this.Height - 50);
        }
        void Program_Resize(object sender, EventArgs e)
        {
            dgv.Bounds = new Rectangle(10, 10, this.Width / 3, this.Height - 50);
        }
    }
}


Chimera_

Можно с помощью свойства Anchor сделать привязку к любой стороне формы, по умолчанию там стоит только Top и Left, а можно еще добавить Bottom и Right вот и все, теперь при растягивании формы будут и растягиваться элементы. P.S. Можно так же задать минимальный и максимальный размер элемента, что до какого размера он будет уменьшаться и увеличиваться.


Chimera_

Как увеличить DataGridView при максимизации формы? Как подстроить расположение и размеры элементов (GroupBox, ComboBox, DataGridView и др.) под разные размеры формы? Как это перерассчитывается? У моих юзеров моники 17-24 дюйма, надо, чтобы у всех все корректно отображалось. Буду благодарна за любой совет
Можно использовать TableLayoutPanel.


Chimera_

Выставьте контролам свойство Dock=DockStyle.Fill - в этом случае элемент заполнит всю форму и при ее увеличении будет также увеличиваться. Также в DockStyle есть Bottom, Top, Left, Right. Все что нужно, можете даже не задавать эти свойства в коде, а при добавлении объектов на форму (важно соблюдать порядок!) корректировать Dock.