Postupy: Nastavení režimů změny velikosti ovládacího prvku Windows Forms DataGridView
Následující postupy ukazují některé běžné scénáře, které přizpůsobují nebo kombinují možnosti velikosti dostupné pro DataGridView ovládací prvek a pro konkrétní sloupce v ovládacím prvku.
Vytvoření sloupce s pevnou šířkou
AutoSizeMode Nastavte vlastnost na None, Resizable vlastnost Falsena , ReadOnly vlastnost
true
na a Width vlastnost na odpovídající hodnotu.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
Vytvoření sloupce, který upraví jeho velikost tak, aby odpovídal obsahu
AutoSizeMode Nastavte vlastnost na režim nastavení velikosti na základě obsahu.
DataGridViewTextBoxColumn titleColumn = new DataGridViewTextBoxColumn(); titleColumn.HeaderText = "Title"; titleColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
Dim titleColumn As New DataGridViewTextBoxColumn() titleColumn.HeaderText = "Title" titleColumn.AutoSizeMode = _ DataGridViewAutoSizeColumnMode.AllCellsExceptHeader
Vytvoření sloupců v režimu výplně pro hodnoty s různou velikostí a důležitostí
DataGridView.AutoSizeColumnsMode Nastavte vlastnost tak, aby Fill nastavil režim velikosti pro všechny sloupce, které tuto hodnotu nepřepíší. FillWeight Nastavte vlastnosti sloupců na hodnoty, které jsou proporcionální s jejich průměrnou šířkou obsahu. MinimumWidth Nastavte vlastnosti důležitých sloupců, abyste zajistili částečné zobrazení obsahu.
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
Příklad
Následující úplný příklad kódu poskytuje ukázkovou aplikaci, která vám pomůže pochopit možnosti velikosti popsané v tomto tématu.
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
Použití této ukázkové aplikace:
Změňte velikost formuláře. Všimněte si, jak sloupce v režimu výplně mění jejich šířky a přitom zachovávají poměry uvedené FillWeight hodnotami vlastností. Podívejte se MinimumWidth , jak sloupec brání jeho změně, když je formulář příliš malý.
Velikost sloupců můžete změnit přetažením rozdělovačů sloupců myší. Podívejte se, jak některé sloupce nelze změnit velikost a jak není možné změnit velikost sloupců, aby byly užší než jejich minimální šířky.
Probíhá kompilace kódu
Tento příklad vyžaduje:
- Odkazy na sestavení System a System.Windows.Forms.
Viz také
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro