web-dev-qa-db-fra.com

Comment changer la largeur de colonne dans DataGridView?

J'ai créé une base de données et une table en utilisant SQL Server Compact 3.5 de Visual Studio avec un ensemble de données comme source de données. Sur mon WinForm, j'ai un DataGridView avec 3 colonnes. Cependant, je n'ai pas pu comprendre comment obtenir les colonnes pour occuper toute la largeur du DataGridView qui est illustré dans l'image ci-dessous.

Je souhaite élargir la colonne des abréviations, puis étendre la colonne de description jusqu'au bord du formulaire. Aucune suggestion?

Mise à jour:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace QuickNote
{
public partial class hyperTextForm : Form
{
    private static hyperTextForm instance;

    public hyperTextForm()
    {
        InitializeComponent();
        this.WindowState = FormWindowState.Normal;
        this.MdiParent = Application.OpenForms.OfType<Form1>().First();            
    }

    public static hyperTextForm GetInstance()
    {
        if (instance == null || instance.IsDisposed)
        {
            instance = new hyperTextForm();
        }

        return instance;
    }

    private void abbreviationsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.abbreviationsBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this.keywordDBDataSet);
    }

    private void hyperTextForm_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'keywordDBDataSet.abbreviations' table. You can move, or remove it, as needed.
        this.abbreviationsTableAdapter.Fill(this.keywordDBDataSet.abbreviations);
        abbreviationsDataGridView.Columns[1].Width = 60;
        abbreviationsDataGridView.Columns[2].Width = abbreviationsDataGridView.Width - abbreviationsDataGridView.Columns[0].Width - abbreviationsDataGridView.Columns[1].Width - 72;
    }
}
}
14
tylerbhughes

Vous pouvez définir la largeur de la colonne abrégée sur une largeur de pixel fixe, puis définir la largeur de la colonne de description sur la largeur de DataGridView, moins la somme des largeurs des autres colonnes et une marge supplémentaire (si vous voulez empêcher une barre de défilement horizontale apparaissant sur le DataGridView):

dataGridView1.Columns[1].Width = 108;  // or whatever width works well for abbrev
dataGridView1.Columns[2].Width = 
    dataGridView1.Width 
    - dataGridView1.Columns[0].Width 
    - dataGridView1.Columns[1].Width 
    - 72;  // this is an extra "margin" number of pixels

Si vous vouliez que la colonne de description occupe toujours le "reste" de la largeur du DataGridView, vous pourriez mettre quelque chose comme le code ci-dessus dans un gestionnaire d'événements Resize du DataGridView.

23
hmqcnoesy

Définissez la propriété "AutoSizeColumnsMode" sur "Fill". Par défaut, elle est définie sur "NONE". Maintenant, les colonnes seront remplies dans DatagridView. Ensuite, vous pouvez définir la largeur des autres colonnes en conséquence.

DataGridView1.Columns[0].Width=100;// The id column 
DataGridView1.Columns[1].Width=200;// The abbrevation columln
//Third Colulmns 'description' will automatically be resized to fill the remaining 
//space
3
MShahid777