Как определить постоянный размер для определенной ячейки в datagridview в Visual Studion Winforms? - PullRequest
0 голосов
/ 18 июня 2019

Я хочу сохранить постоянный размер для строк и столбцов в приложении Winforms Visual Studio V2015. Ниже приведен код для таблицы данных, которую я использую.

Изображение сетки данных: - https://drive.google.com/open?id=1BpoW0WygC9mrSrxy4xUhJh0fdQozm0t9

    public partial class studentslist2 : UserControl
    {
    public studentslist2()
    {
        InitializeComponent();
    }
    DataTable table = new DataTable();
    private void dataGridView1_CellContentClick(object sender, 
    DataGridViewCellEventArgs e)
    {
    }

    private void studentslist2_Load(object sender, EventArgs e)
    {
        table.Columns.Add("SR.NO", typeof(int));
        table.Columns.Add("NAME", typeof(int));
        table.Columns.Add("CLASS", typeof(int));
        table.Columns.Add("ROLL NO", typeof(int));
        table.Columns.Add("GR.NO", typeof(int));
        table.Columns.Add("ADHAAR CARD UID", typeof(int));
        table.Columns.Add("GENDER", typeof(int));
        table.Columns.Add("CONTACT", typeof(int));
        table.Columns.Add("ADDRESS", typeof(int));

        dataGridView1.DataSource = table;
    }
}

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вы можете указать, могут ли пользователи изменять размеры столбцов и строк, устанавливая свойства AllowUserToResizeColumns и AllowUserToResizeRows :

dataGridView1.AllowUserToResizeColumns = false;
dataGridView1.AllowUserToResizeRows = false;

Вам также необходимо отключить автоматический столбецфункция изменения размера ( AutoResizeColumns свойство), поэтому вы можете указать пользовательскую меру:

dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.None);
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;

Отключить режим переноса для столбцов и строк:

dataGridView1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
dataGridView1.RowTemplate.DefaultCellStyle.WrapMode = DataGridViewTriState.False;

Установите RowTemplate на некоторые конкретные значения;этот стиль используется, когда другой стиль не указан.Весьма полезно предотвращать изменение сеткой своих стилей (и, возможно, макета), когда форма хоста меняет свои собственные стили:
(важны и шрифт, и ячейки ForeColor и BackColor)

dataGridView1.RowTemplate.DefaultCellStyle.Font = 
    new Font("Segoe UI", 9.25f, FontStyle.Regular, GraphicsUnit.Point);
dataGridView1.RowTemplate.DefaultCellStyle.BackColor = Color.White;
dataGridView1.RowTemplate.DefaultCellStyle.ForeColor = Color.Black;
dataGridView1.RowTemplate.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight;
dataGridView1.RowTemplate.DefaultCellStyle.SelectionForeColor = SystemColors.HighlightText;

Вы можете определить высоту рядов, если вам нужна конкретная.Позаботьтесь о том, чтобы высоту строки нельзя было установить равным точному размеру шрифта, иначе элементы управления, такие как CheckBox и ComboBox, не будут соответствовать и не будут отрисованы.
Здесь я использую TextRenderer.Метод MeasureText для измерения строки с использованием шрифта, установленного в RowTemplate.DefaultCellStyle.Font.

dataGridView1.RowHeadersWidth = 40;
dataGridView1.RowTemplate.Height = TextRenderer.MeasureText(
    "Sample Text", dataGridView1.RowTemplate.DefaultCellStyle.Font).Height + 4;

Поскольку режим обтекания отключен, вы можете просто использовать AutoSizeRowsMode , установив его на DataGridViewAutoSizeRowsMode.AllCells.

Теперь, после установки DataGridView.DataSource, вы также можете установить ширину всех столбцов на одно и то же значение (или любое другое пользовательское значение):
(ЗдесьШирина всех столбцов установлена ​​на 150 пикселей)

dataGridView1.DataSource = [DataTable];
dataGridView1.Columns.OfType<DataGridViewColumn>().ToList().ForEach(c => c.Width = 150);
0 голосов
/ 18 июня 2019

Я сделал быстрый демонстрационный проект, показывающий, как использовать свойство RowTemplate для отключения изменения размера строки (см. MSDN ).

public partial class frmDataGridView : Form
{
    public frmDataGridView()
    {
        InitializeComponent();
    }

    private void frmDataGridView_Load(object sender, EventArgs e)
    {
        // disable resizing of rows
        dataGridView1.RowTemplate.Resizable = DataGridViewTriState.False;

        dataGridView1.RowTemplate.Height = 75; // set to preferred (your personal) default

        // datasource - structure
        DataTable table = new DataTable();
        table.Columns.Add("SR.NO", typeof(int));
        table.Columns.Add("NAME", typeof(int));
        table.Columns.Add("CLASS", typeof(int));
        table.Columns.Add("ROLL NO", typeof(int));
        table.Columns.Add("GR.NO", typeof(int));
        table.Columns.Add("ADHAAR CARD UID", typeof(int));
        table.Columns.Add("GENDER", typeof(int));
        table.Columns.Add("CONTACT", typeof(int));
        table.Columns.Add("ADDRESS", typeof(int));

        // datasource - data
        table.Rows.Add(1, 1, 1, 1, 1, 1, 1, 1, 1);

        dataGridView1.DataSource = table;

        dataGridView1.Columns[0].Width = 40; // set a specific width for first column in DataGridView
    }
}

Это приведет к форме с сеткой данных, подобной этой:

DataGridView fixed row height

Вы можете установить свойство Width для каждого нужного столбца (см. DataGridViewColumn.Width ).

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