Gewusst wie: Festlegen der Größenanpassungsmodi des DataGridView-Steuerelements in Windows Forms
In den folgenden Prozeduren werden einige häufige Szenarien veranschaulicht, in denen die für das DataGridView-Steuerelement sowie für bestimmte Spalten in einem Steuerelement verfügbaren Größenanpassungsoptionen angepasst oder kombiniert werden.
So erstellen Sie eine Spalte mit fester Breite
Legen Sie die AutoSizeMode-Eigenschaft auf None, die Resizable-Eigenschaft auf False, die ReadOnly-Eigenschaft auf true und die Width-Eigenschaft auf einen angemessenen Wert fest.
Dim idColumn As New DataGridViewTextBoxColumn() idColumn.HeaderText = "ID" idColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None idColumn.Resizable = DataGridViewTriState.False idColumn.ReadOnly = True idColumn.Width = 20
DataGridViewTextBoxColumn idColumn = new DataGridViewTextBoxColumn(); idColumn.HeaderText = "ID"; idColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; idColumn.Resizable = DataGridViewTriState.False; idColumn.ReadOnly = true; idColumn.Width = 20;
So erstellen Sie eine Spalte, deren Größe an ihren Inhalt angepasst wird
Legen Sie die AutoSizeMode-Eigenschaft auf einen Größenanpassungsmodus fest, der auf dem Inhalt basiert.
Dim titleColumn As New DataGridViewTextBoxColumn() titleColumn.HeaderText = "Title" titleColumn.AutoSizeMode = _ DataGridViewAutoSizeColumnMode.AllCellsExceptHeader
DataGridViewTextBoxColumn titleColumn = new DataGridViewTextBoxColumn(); titleColumn.HeaderText = "Title"; titleColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
So erstellen Sie Füllmodusspalten für Werte unterschiedlicher Größe und Wichtigkeit
Legen Sie die DataGridView.AutoSizeColumnsMode-Eigenschaft auf Fill fest, um den Modus zur Festlegung der Größe für alle Spalten festzulegen, die diesen Wert nicht überschreiben. Legen Sie die FillWeight-Eigenschaften der Spalten auf Werte fest, die proportional zu ihrer durchschnittlichen Inhaltsbreite sind. Legen Sie die MinimumWidth-Eigenschaften wichtiger Spalten fest, um sicherzustellen, dass ihr Inhalt teilweise angezeigt wird.
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.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;
Beispiel
Das folgende Codebeispiel enthält eine Beispielanwendung, die Sie dabei unterstützen soll, die in diesem Thema beschriebenen Größenanpassungsoptionen nachzuvollziehen.
Imports System
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
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);
}
}
So verwenden Sie diese Beispielanwendung
Ändern Sie die Größe des Formulars. Beachten Sie, wie sich die Breite der Füllmodusspalten ändert, während die durch die FillWeight-Eigenschaftswerte festgelegten Proportionen beibehalten werden. Beachten Sie außerdem, wie die MinimumWidth einer Spalte verhindert, dass sie sich ändert, wenn das Formular zu klein ist.
Ändern Sie die Spaltengrößen, indem Sie die Spaltentrennlinie mit der Maus ziehen. Beachten Sie, dass einige Spalten nicht in der Größe angepasst werden können und dass anpassbare Spalten nicht schmaler als bis zur minimalen Breite gezogen werden können.
Kompilieren des Codes
Für dieses Beispiel benötigen Sie:
- Verweise auf die Assemblys System und System.Windows.Forms.
Informationen zum Erstellen dieses Beispiels über die Befehlszeile für Visual Basic oder Visual C# finden Sie unter Erstellen von der Befehlszeile aus (Visual Basic) oder unter Erstellen über die Befehlszeile mit csc.exe. Sie können dieses Beispiel auch in Visual Studio erstellen, indem Sie den Code in ein neues Projekt einfügen. Weitere Informationen finden Sie unter Gewusst wie: Kompilieren und Ausführen eines vollständigen Windows Forms-Codebeispiels mit Visual Studio und Gewusst wie: Kompilieren und Ausführen eines vollständigen Windows Forms-Codebeispiels mit Visual Studio und Gewusst wie: Kompilieren und Ausführen eines vollständigen Windows Forms-Codebeispiels mit Visual Studio und Gewusst wie: Kompilieren und Ausführen eines vollständigen Windows Forms-Codebeispiels mit Visual Studio und Gewusst wie: Kompilieren und Ausführen eines vollständigen Windows Forms-Codebeispiels mit Visual Studio.
Siehe auch
Referenz
DataGridViewColumn.AutoSizeMode