Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source

DataGridColumnStyle, classe

Spécifie l'apparence, la mise en forme du texte et le comportement d'une colonne de contrôle System.Windows.Forms.DataGrid. Cette classe est abstraite.

Espace de noms :  System.Windows.Forms
Assembly :  System.Windows.Forms (dans System.Windows.Forms.dll)

public abstract class DataGridColumnStyle : Component, 
	IDataGridColumnStyleEditingNotificationService

Le type DataGridColumnStyle expose les membres suivants.

  NomDescription
Méthode publiqueDataGridColumnStyle()Dans une classe dérivée, initialise une nouvelle instance de la classe DataGridColumnStyle.
Méthode publiqueDataGridColumnStyle(PropertyDescriptor)Initialise une nouvelle instance de la classe DataGridColumnStyle avec le PropertyDescriptor spécifié.
Début

  NomDescription
Propriété publiqueAlignmentObtient ou définit l'alignement du texte dans une colonne.
Propriété protégéeCanRaiseEventsObtient une valeur qui indique si le composant peut déclencher un événement. (Hérité de Component.)
Propriété publiqueContainerObtient le IContainer qui contient Component. (Hérité de Component.)
Propriété publiqueDataGridTableStyleObtient le DataGridTableStyle pour la colonne.
Propriété protégéeDesignModeObtient une valeur qui indique si Component est actuellement en mode design. (Hérité de Component.)
Propriété protégéeEventsObtient la liste des gestionnaires d'événements attachés à ce Component. (Hérité de Component.)
Propriété protégéeFontHeightObtient la hauteur de la police de la colonne.
Propriété publiqueHeaderAccessibleObjectInfrastructure. Obtient le AccessibleObject pour la colonne.
Propriété publiqueHeaderTextObtient ou définit le texte de l'en-tête de colonne.
Propriété publiqueMappingNameObtient ou définit le nom des données membres avec lesquelles le style de colonne est mis en correspondance.
Propriété publiqueNullTextObtient ou définit le texte affiché quand la colonne contient null.
Propriété publiquePropertyDescriptorObtient ou définit PropertyDescriptor qui détermine les attributs des données affichées par DataGridColumnStyle.
Propriété publiqueReadOnlyObtient ou définit une valeur indiquant si les données dans la colonne peuvent être modifiées.
Propriété publiqueSiteObtient ou définit le ISite de Component. (Hérité de Component.)
Propriété publiqueWidthObtient ou définit la largeur de la colonne.
Début

  NomDescription
Méthode protégéeAbortEn cas de substitution dans une classe dérivée, génère une demande d'interruption d'une procédure de modification.
Méthode protégéeBeginUpdateSuspend la peinture de la colonne jusqu'à ce que la méthode EndUpdate soit appelée.
Méthode protégéeCheckValidDataSourceLève une exception si le System.Windows.Forms.DataGrid ne possède pas une source de données valide, ou si cette colonne n'est pas mappée avec une propriété valide dans la source de données.
Méthode protégéeColumnStartedEditingIndique à System.Windows.Forms.DataGrid que l'utilisateur a commencé la modification de la colonne.
Méthode protégéeCommitEn cas de substitution dans une classe dérivée, génère une demande pour terminer une procédure de modification.
Méthode protégéeConcedeFocusNotifie une colonne qu'elle doit abandonner le focus vers le contrôle qu'elle héberge.
Méthode protégéeCreateHeaderAccessibleObjectObtient le AccessibleObject pour la colonne.
Méthode publiqueCreateObjRefCrée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. (Hérité de MarshalByRefObject.)
Méthode publiqueDispose()Libère toutes les ressources utilisées par Component. (Hérité de Component.)
Méthode protégéeDispose(Boolean)Libère les ressources non managées utilisées par Component et libère éventuellement les ressources managées. (Hérité de Component.)
Méthode protégéeEdit(CurrencyManager, Int32, Rectangle, Boolean)Prépare une cellule pour modification.
Méthode protégéeEdit(CurrencyManager, Int32, Rectangle, Boolean, String)Prépare la cellule pour modification en utilisant le CurrencyManager, le numéro de ligne et les paramètres de Rectangle spécifiés.
Méthode protégéeEdit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean)En cas de substitution dans une classe dérivée, prépare une cellule pour modification.
Méthode protégéeEndUpdateReprend la peinture des colonnes suspendues en appelant la méthode BeginUpdate.
Méthode protégéeEnterNullValueEntre un DBNull.Value dans la colonne.
Méthode publiqueEquals(Object)Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode protégéeFinalizeLibère les ressources non managées et exécute d'autres opérations de nettoyage avant la récupération de Component par le garbage collection. (Hérité de Component.)
Méthode protégéeGetColumnValueAtRowObtient la valeur dans la ligne spécifiée à partir du CurrencyManager spécifié.
Méthode publiqueGetHashCodeSert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publiqueGetLifetimeServiceRécupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode protégéeGetMinimumHeightEn cas de substitution dans une classe dérivée, obtient la hauteur minimale d'une ligne.
Méthode protégéeGetPreferredHeightEn cas de substitution dans une classe dérivée, obtient la hauteur utilisée pour redimensionner automatiquement les colonnes.
Méthode protégéeGetPreferredSizeEn cas de substitution dans une classe dérivée, obtient la largeur et la hauteur de la valeur spécifiée. La largeur et la hauteur sont utilisées quand l'utilisateur navigue vers DataGridTableStyle en utilisant le DataGridColumnStyle.
Méthode protégéeGetServiceRetourne un objet qui représente un service fourni par Component ou par son Container. (Hérité de Component.)
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueInitializeLifetimeServiceObtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode protégéeInvalidateRedessine la colonne et provoque l'envoi d'un message de peinture au contrôle.
Méthode protégéeMemberwiseClone()Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode protégéeMemberwiseClone(Boolean)Crée une copie superficielle de l'objet MarshalByRefObject actuel. (Hérité de MarshalByRefObject.)
Méthode protégéePaint(Graphics, Rectangle, CurrencyManager, Int32)Peint le DataGridColumnStyle avec les Graphics, Rectangle, CurrencyManager et numéro de ligne spécifiés.
Méthode protégéePaint(Graphics, Rectangle, CurrencyManager, Int32, Boolean)En cas de substitution dans une classe dérivée, peint un DataGridColumnStyle avec les Graphics, Rectangle, CurrencyManager, numéro de ligne et alignement spécifiés.
Méthode protégéePaint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean)Peint un DataGridColumnStyle avec les Graphics, Rectangle, CurrencyManager, numéro de ligne, couleur d'arrière-plan, couleur de premier plan et alignement spécifiés.
Méthode protégéeReleaseHostedControlAutorise la colonne à libérer des ressources lorsque le contrôle qu'elle héberge n'est pas nécessaire.
Méthode publiqueResetHeaderTextRétablit la valeur par défaut null de la propriété HeaderText.
Méthode protégéeSetColumnValueAtRowAffecte la valeur d'un CurrencyManager spécifié dans une ligne spécifiée.
Méthode protégéeSetDataGridDéfinit le contrôle System.Windows.Forms.DataGrid auquel la colonne appartient.
Méthode protégéeSetDataGridInColumnDéfinit System.Windows.Forms.DataGrid pour la colonne.
Méthode publiqueToStringRetourne String contenant le nom du Component, s'il existe. Cette méthode ne doit pas être substituée. (Hérité de Component.)
Méthode protégéeUpdateUIMet à jour la valeur d'une ligne spécifiée avec le texte indiqué.
Début

  NomDescription
Événement publicAlignmentChangedSe produit lorsque la valeur de la propriété Alignment est modifiée.
Événement publicDisposedSe produit lorsque le composant est supprimé par un appel à la méthode Dispose. (Hérité de Component.)
Événement publicFontChangedSe produit lorsque la police de la colonne change.
Événement publicHeaderTextChangedSe produit lorsque la valeur de la propriété HeaderText est modifiée.
Événement publicMappingNameChangedSe produit lorsque la valeur MappingName est modifiée.
Événement publicNullTextChangedSe produit lorsque la valeur NullText est modifiée.
Événement publicPropertyDescriptorChangedSe produit lorsque la valeur de la propriété PropertyDescriptor est modifiée.
Événement publicReadOnlyChangedSe produit lorsque la valeur de la propriété ReadOnly est modifiée.
Événement publicWidthChangedSe produit lorsque la valeur de la propriété Width est modifiée.
Début

  NomDescription
Implémentation d'interface expliciteMéthode privéeIDataGridColumnStyleEditingNotificationService.ColumnStartedEditingIndique au contrôle DataGrid que l'utilisateur a commencé la modification de la colonne.
Début

La collection d'objets DataGridColumnStyle (GridColumnStylesCollection) est accessible par l'intermédiaire de la propriété TableStyles du contrôle System.Windows.Forms.DataGrid.

Le contrôle System.Windows.Forms.DataGrid crée automatiquement une collection d'objets DataGridColumnStyle pour vous quand vous définissez la propriété DataSource avec une source de données appropriée. Les objets effectivement créés sont des instances de l'une des classes suivantes qui héritent de DataGridColumnStyle : la classe DataGridBoolColumn ou DataGridTextBoxColumn.

Pour formater l'affichage des données, définissez la propriété Format de la classe DataGridTextBoxColumn avec l'une des valeurs de formatage. Pour plus d'informations sur les valeurs de formatage valides, consultez Mise en forme des types et Chaînes de format de date et d'heure personnalisées.

Vous pouvez également créer votre propre jeu d'objets DataGridColumnStyle et ajouter ceux-ci au GridColumnStylesCollection. Dans ce cas, vous devez définir le MappingName de chaque style de colonne avec le ColumnName d'un DataColumn pour synchroniser l'affichage des colonnes avec les données réelles.

Remarque AttentionAttention

Vous devez toujours créer des objets DataGridColumnStyle et les ajouter à GridColumnStylesCollection avant d'ajouter des objets DataGridTableStyle à GridTableStylesCollection. Lorsque vous ajoutez un DataGridTableStyle vide avec une valeur MappingName valide à la collection, des objets DataGridColumnStyle sont automatiquement générés pour vous. Par conséquent, une exception est levée si vous essayez d'ajouter de nouveaux objets DataGridColumnStyle avec des valeurs de MappingName en double à GridColumnStylesCollection.

Si l'une des classes dérivées est instanciée par un contrôle System.Windows.Forms.DataGrid, la classe créée dépend du DataType du DataColumn associé à l'objet DataGridColumnStyle. Par exemple, un DataColumn dont le DataType a la valeur System.Boolean sera associé à un DataGridBoolColumn. Pour déterminer le type d'un DataGridColumnStyle, utilisez la méthode GetType.

Pour créer vos propres classes de colonne, vous pouvez hériter de DataGridColumnStyle. Cela peut être utile si vous souhaitez créer des colonnes spéciales qui hébergent des contrôles, comme dans l'exemple de la classe DataGridTextBox, qui héberge le contrôle TextBox. Par exemple, vous pouvez héberger un contrôle Image pour afficher des images dans des colonnes, ou bien vous pouvez créer votre propre contrôle utilisateur pour l'héberger dans la colonne.

La fonctionnalité du DataGridColumnStyle ne doit pas être confondue avec celle du DataColumn. Bien que le DataColumn contienne les propriétés et méthodes appropriées pour créer un schéma de table de données, le DataGridColumnStyle contient les propriétés et méthodes relatives à l'apparence d'une colonne individuelle à l'écran.

Si une ligne contient un DBNull.Value, le texte affiché dans la colonne peut être défini avec la propriété NullText.

La classe DataGridColumnStyle vous permet également de spécifier le comportement d'une colonne lorsque ses données sont modifiées. Les méthodes BeginUpdate et EndUpdate suspendent temporairement le dessin de la colonne pendant que des mises à jour importantes sont effectuées sur les données de la colonne. Sans cette fonctionnalité, chaque modification dans chaque cellule de la grille serait immédiatement dessinée, ce qui peut perturber l'utilisateur et affecter les performances.

Plusieurs méthodes permettent la surveillance de la colonne pendant qu'elle est modifiée par l'utilisateur, notamment les événements Edit et Commit.

La plupart des propriétés et méthodes de la classe sont adaptées pour contrôler l'apparence d'une colonne. Mais quelques-unes, telles que GetColumnValueAtRow et SetColumnValueAtRow vous permettent d'examiner et modifier la valeur dans une cellule spécifiée.

Remarques à l'attention des implémenteurs

Quand vous héritez de DataGridColumnStyle, vous devez substituer les membres suivants : Abort, Commit, Edit et Paint (deux fois).

L'exemple de code suivant crée un DataGridColumnStyle qui héberge un contrôle DateTimePicker.


using System;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using System.Security.Permissions;

// This example shows how to create your own column style that
// hosts a control, in this case, a DateTimePicker.
public class DataGridTimePickerColumn : DataGridColumnStyle
{
    private CustomDateTimePicker customDateTimePicker1 = 
        new CustomDateTimePicker();

    // The isEditing field tracks whether or not the user is
    // editing data with the hosted control.
    private bool isEditing;

    public DataGridTimePickerColumn() : base()
    {
        customDateTimePicker1.Visible = false;
    }

    protected override void Abort(int rowNum)
    {
        isEditing = false;
        customDateTimePicker1.ValueChanged -=
            new EventHandler(TimePickerValueChanged);
        Invalidate();
    }

    protected override bool Commit
        (CurrencyManager dataSource, int rowNum)
    {
        customDateTimePicker1.Bounds = Rectangle.Empty;

        customDateTimePicker1.ValueChanged -=
            new EventHandler(TimePickerValueChanged);

        if (!isEditing)
            return true;

        isEditing = false;

        try
        {
            DateTime value = customDateTimePicker1.Value;
            SetColumnValueAtRow(dataSource, rowNum, value);
        }
        catch (Exception)
        {
            Abort(rowNum);
            return false;
        }

        Invalidate();
        return true;
    }

    protected override void Edit(
        CurrencyManager source,
        int rowNum,
        Rectangle bounds,
        bool readOnly,
        string displayText,
        bool cellIsVisible)
    {
        DateTime value = (DateTime)
            GetColumnValueAtRow(source, rowNum);
        if (cellIsVisible)
        {
            customDateTimePicker1.Bounds = new Rectangle
                (bounds.X + 2, bounds.Y + 2,
                bounds.Width - 4, bounds.Height - 4);
            customDateTimePicker1.Value = value;
            customDateTimePicker1.Visible = true;
            customDateTimePicker1.ValueChanged +=
                new EventHandler(TimePickerValueChanged);
        }
        else
        {
            customDateTimePicker1.Value = value;
            customDateTimePicker1.Visible = false;
        }

        if (customDateTimePicker1.Visible)
            DataGridTableStyle.DataGrid.Invalidate(bounds);

        customDateTimePicker1.Focus();
    }

    protected override Size GetPreferredSize(
        Graphics g,
        object value)
    {
        return new Size(100, customDateTimePicker1.PreferredHeight + 4);
    }

    protected override int GetMinimumHeight()
    {
        return customDateTimePicker1.PreferredHeight + 4;
    }

    protected override int GetPreferredHeight(Graphics g,
        object value)
    {
        return customDateTimePicker1.PreferredHeight + 4;
    }

    protected override void Paint(Graphics g,
        Rectangle bounds,
        CurrencyManager source,
        int rowNum)
    {
        Paint(g, bounds, source, rowNum, false);
    }

    protected override void Paint(
        Graphics g,
        Rectangle bounds,
        CurrencyManager source,
        int rowNum,
        bool alignToRight)
    {
        Paint(
            g, bounds,
            source,
            rowNum,
            Brushes.Red,
            Brushes.Blue,
            alignToRight);
    }

    protected override void Paint(
        Graphics g,
        Rectangle bounds,
        CurrencyManager source,
        int rowNum,
        Brush backBrush,
        Brush foreBrush,
        bool alignToRight)
    {
        DateTime date = (DateTime)
            GetColumnValueAtRow(source, rowNum);
        Rectangle rect = bounds;
        g.FillRectangle(backBrush, rect);
        rect.Offset(0, 2);
        rect.Height -= 2;
        g.DrawString(date.ToString("d"),
            this.DataGridTableStyle.DataGrid.Font,
            foreBrush, rect);
    }

    protected override void SetDataGridInColumn(DataGrid value)
    {
        base.SetDataGridInColumn(value);
        if (customDateTimePicker1.Parent != null)
        {
            customDateTimePicker1.Parent.Controls.Remove
                (customDateTimePicker1);
        }
        if (value != null)
        {
            value.Controls.Add(customDateTimePicker1);
        }
    }

    private void TimePickerValueChanged(object sender, EventArgs e)
    {
        // Remove the handler to prevent it from being called twice in a row.
        customDateTimePicker1.ValueChanged -=
            new EventHandler(TimePickerValueChanged);
        this.isEditing = true;
        base.ColumnStartedEditing(customDateTimePicker1);
    }
}

public class CustomDateTimePicker : DateTimePicker
{
    [SecurityPermissionAttribute(
    SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
    protected override bool ProcessKeyMessage(ref Message m)
    {
        // Keep all the keys for the DateTimePicker.
        return ProcessKeyEventArgs(ref m);
    }
}

public class MyForm : Form
{
    private DataTable namesDataTable;
    private DataGrid grid = new DataGrid();
    public MyForm() : base()
    {
        InitForm();

        namesDataTable = new DataTable("NamesTable");
        namesDataTable.Columns.Add(new DataColumn("Name"));
        DataColumn dateColumn = new DataColumn
            ("Date", typeof(DateTime));
        dateColumn.DefaultValue = DateTime.Today;
        namesDataTable.Columns.Add(dateColumn);
        DataSet namesDataSet = new DataSet();
        namesDataSet.Tables.Add(namesDataTable);
        grid.DataSource = namesDataSet;
        grid.DataMember = "NamesTable";
        AddGridStyle();
        AddData();
    }

    private void AddGridStyle()
    {
        DataGridTableStyle myGridStyle = new DataGridTableStyle();
        myGridStyle.MappingName = "NamesTable";

        DataGridTextBoxColumn nameColumnStyle =
            new DataGridTextBoxColumn();
        nameColumnStyle.MappingName = "Name";
        nameColumnStyle.HeaderText = "Name";
        myGridStyle.GridColumnStyles.Add(nameColumnStyle);

        DataGridTimePickerColumn timePickerColumnStyle =
            new DataGridTimePickerColumn();
        timePickerColumnStyle.MappingName = "Date";
        timePickerColumnStyle.HeaderText = "Date";
        timePickerColumnStyle.Width = 100;
        myGridStyle.GridColumnStyles.Add(timePickerColumnStyle);

        grid.TableStyles.Add(myGridStyle);
    }

    private void AddData()
    {

        DataRow dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 1";
        dRow["Date"] = new DateTime(2001, 12, 01);
        namesDataTable.Rows.Add(dRow);

        dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 2";
        dRow["Date"] = new DateTime(2001, 12, 04);
        namesDataTable.Rows.Add(dRow);

        dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 3";
        dRow["Date"] = new DateTime(2001, 12, 29);
        namesDataTable.Rows.Add(dRow);

        dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 4";
        dRow["Date"] = new DateTime(2001, 12, 13);
        namesDataTable.Rows.Add(dRow);

        dRow = namesDataTable.NewRow();
        dRow["Name"] = "Name 5";
        dRow["Date"] = new DateTime(2001, 12, 21);
        namesDataTable.Rows.Add(dRow);

        namesDataTable.AcceptChanges();
    }

    private void InitForm()
    {
        this.Size = new Size(500, 500);
        grid.Size = new Size(350, 250);
        grid.TabStop = true;
        grid.TabIndex = 1;
        this.StartPosition = FormStartPosition.CenterScreen;
        this.Controls.Add(grid);
    }

    [STAThread]
    public static void Main()
    {
        Application.Run(new MyForm());
    }
}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft