Bagikan melalui


Panduan untuk Mengatur Mode Penentuan Ukuran Kontrol Windows Forms DataGridView

Prosedur berikut menunjukkan beberapa skenario umum yang menyesuaikan atau menggabungkan opsi ukuran yang tersedia untuk kontrol DataGridView dan untuk kolom tertentu dalam kontrol.

Untuk membuat kolom lebar tetap

  • Atur properti AutoSizeMode ke None, properti Resizable ke False, properti ReadOnly ke true, dan properti Width ke nilai yang sesuai.

    DataGridViewTextBoxColumn idColumn =
        new DataGridViewTextBoxColumn();
    idColumn.HeaderText = "ID";
    idColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    idColumn.Resizable = DataGridViewTriState.False;
    idColumn.ReadOnly = true;
    idColumn.Width = 20;
    
    Dim idColumn As New DataGridViewTextBoxColumn()
    idColumn.HeaderText = "ID"
    idColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None
    idColumn.Resizable = DataGridViewTriState.False
    idColumn.ReadOnly = True
    idColumn.Width = 20
    

Untuk membuat kolom yang menyesuaikan ukurannya agar pas dengan kontennya

  • Atur properti AutoSizeMode ke mode ukuran berbasis konten.

    DataGridViewTextBoxColumn titleColumn =
        new DataGridViewTextBoxColumn();
    titleColumn.HeaderText = "Title";
    titleColumn.AutoSizeMode =
        DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
    
    Dim titleColumn As New DataGridViewTextBoxColumn()
    titleColumn.HeaderText = "Title"
    titleColumn.AutoSizeMode = _
        DataGridViewAutoSizeColumnMode.AllCellsExceptHeader
    

Untuk membuat kolom mode isian untuk nilai dengan ukuran dan kepentingan yang bervariasi

  • Atur properti DataGridView.AutoSizeColumnsMode ke Fill untuk mengatur mode ukuran untuk semua kolom yang tidak mengambil alih nilai ini. Atur properti FillWeight kolom ke nilai yang sebanding dengan lebar konten rata-ratanya. Atur properti MinimumWidth kolom penting untuk memastikan tampilan konten parsial.

    dataGridView1.AutoSizeColumnsMode =
        DataGridViewAutoSizeColumnsMode.Fill;
    
    DataGridViewTextBoxColumn subTitleColumn =
        new DataGridViewTextBoxColumn();
    subTitleColumn.HeaderText = "Subtitle";
    subTitleColumn.MinimumWidth = 50;
    subTitleColumn.FillWeight = 100;
    
    DataGridViewTextBoxColumn summaryColumn =
        new DataGridViewTextBoxColumn();
    summaryColumn.HeaderText = "Summary";
    summaryColumn.MinimumWidth = 50;
    summaryColumn.FillWeight = 200;
    
    DataGridViewTextBoxColumn contentColumn =
        new DataGridViewTextBoxColumn();
    contentColumn.HeaderText = "Content";
    contentColumn.MinimumWidth = 50;
    contentColumn.FillWeight = 300;
    
    dataGridView1.AutoSizeColumnsMode = _
        DataGridViewAutoSizeColumnsMode.Fill
    
    Dim subTitleColumn As new DataGridViewTextBoxColumn()
    subTitleColumn.HeaderText = "Subtitle"
    subTitleColumn.MinimumWidth = 50
    subTitleColumn.FillWeight = 100
    
    Dim summaryColumn As new DataGridViewTextBoxColumn()
    summaryColumn.HeaderText = "Summary"
    summaryColumn.MinimumWidth = 50
    summaryColumn.FillWeight = 200
    
    Dim contentColumn As new DataGridViewTextBoxColumn()
    contentColumn.HeaderText = "Content"
    contentColumn.MinimumWidth = 50
    contentColumn.FillWeight = 300
    

Contoh

Contoh kode lengkap berikut menyediakan aplikasi demonstrasi yang dapat membantu Anda memahami opsi ukuran yang dijelaskan dalam topik ini.

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

public class Form1 : Form
{
    [STAThreadAttribute()]
    public static void Main()
    {
        Application.Run(new Form1());
    }

    private DataGridView dataGridView1 = new DataGridView();

    public Form1()
    {
        dataGridView1.Dock = DockStyle.Fill;
        Controls.Add(dataGridView1);
        Width *= 2;
        Text = "DataGridView Sizing Scenarios";
    }

    protected override void OnLoad(EventArgs e)
    {
        DataGridViewTextBoxColumn idColumn =
            new DataGridViewTextBoxColumn();
        idColumn.HeaderText = "ID";
        idColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
        idColumn.Resizable = DataGridViewTriState.False;
        idColumn.ReadOnly = true;
        idColumn.Width = 20;

        DataGridViewTextBoxColumn titleColumn =
            new DataGridViewTextBoxColumn();
        titleColumn.HeaderText = "Title";
        titleColumn.AutoSizeMode =
            DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;

        dataGridView1.AutoSizeColumnsMode =
            DataGridViewAutoSizeColumnsMode.Fill;

        DataGridViewTextBoxColumn subTitleColumn =
            new DataGridViewTextBoxColumn();
        subTitleColumn.HeaderText = "Subtitle";
        subTitleColumn.MinimumWidth = 50;
        subTitleColumn.FillWeight = 100;

        DataGridViewTextBoxColumn summaryColumn =
            new DataGridViewTextBoxColumn();
        summaryColumn.HeaderText = "Summary";
        summaryColumn.MinimumWidth = 50;
        summaryColumn.FillWeight = 200;

        DataGridViewTextBoxColumn contentColumn =
            new DataGridViewTextBoxColumn();
        contentColumn.HeaderText = "Content";
        contentColumn.MinimumWidth = 50;
        contentColumn.FillWeight = 300;

        dataGridView1.Columns.AddRange(new DataGridViewTextBoxColumn[] {
            idColumn, titleColumn, subTitleColumn,
            summaryColumn, contentColumn });
        dataGridView1.Rows.Add(new String[] { "1",
            "A Short Title", "A Longer SubTitle",
            "A short description of the main point.",
            "The full contents of the topic, with detailed examples." });

        base.OnLoad(e);
    }
}
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms

Public Class Form1
    Inherits Form

    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.Run(New Form1())
    End Sub

    Private dataGridView1 As New DataGridView()

    Public Sub New()
        dataGridView1.Dock = DockStyle.Fill
        Controls.Add(dataGridView1)
        Width *= 2
        Text = "DataGridView Sizing Scenarios"
    End Sub

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)

        Dim idColumn As New DataGridViewTextBoxColumn()
        idColumn.HeaderText = "ID"
        idColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None
        idColumn.Resizable = DataGridViewTriState.False
        idColumn.ReadOnly = True
        idColumn.Width = 20

        Dim titleColumn As New DataGridViewTextBoxColumn()
        titleColumn.HeaderText = "Title"
        titleColumn.AutoSizeMode = _
            DataGridViewAutoSizeColumnMode.AllCellsExceptHeader

        dataGridView1.AutoSizeColumnsMode = _
            DataGridViewAutoSizeColumnsMode.Fill

        Dim subTitleColumn As new DataGridViewTextBoxColumn()
        subTitleColumn.HeaderText = "Subtitle"
        subTitleColumn.MinimumWidth = 50
        subTitleColumn.FillWeight = 100

        Dim summaryColumn As new DataGridViewTextBoxColumn()
        summaryColumn.HeaderText = "Summary"
        summaryColumn.MinimumWidth = 50
        summaryColumn.FillWeight = 200

        Dim contentColumn As new DataGridViewTextBoxColumn()
        contentColumn.HeaderText = "Content"
        contentColumn.MinimumWidth = 50
        contentColumn.FillWeight = 300

        dataGridView1.Columns.AddRange(New DataGridViewTextBoxColumn() { _
            idColumn, titleColumn, subTitleColumn, _
            summaryColumn, contentColumn})
        dataGridView1.Rows.Add(New String() {"1", _
            "A Short Title", "A Longer SubTitle", _
            "A short description of the main point.", _
            "The full contents of the topic, with detailed examples."})

        MyBase.OnLoad(e)
    End Sub
End Class

Untuk menggunakan aplikasi demonstrasi ini:

  • Ubah ukuran formulir. Amati bagaimana kolom mode isian mengubah lebarnya sambil mempertahankan proporsi yang ditunjukkan oleh nilai properti FillWeight. Amati bagaimana kolom MinimumWidth mencegah kolom tersebut berubah ketika form terlalu kecil.

  • Ubah ukuran kolom dengan menyeret pembagi kolom dengan mouse. Amati bagaimana beberapa kolom tidak dapat diubah ukurannya, dan bagaimana kolom yang dapat diubah ukurannya tidak dapat dibuat lebih sempit daripada lebar minimumnya.

Mengkompilasi Kode

Contoh ini memerlukan:

  • Referensi ke assembly System dan System.Windows.Forms.

Lihat juga