Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

IDataGridViewEditingControl, interface

Définit les fonctionnalités courantes pour les contrôles hébergés dans les cellules d'un DataGridView.

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

Le type IDataGridViewEditingControl expose les membres suivants.

  NomDescription
Propriété publiqueEditingControlDataGridViewObtient ou définit le DataGridView qui contient la cellule.
Propriété publiqueEditingControlFormattedValueObtient ou définit la valeur mise en forme de la cellule en cours de modification par l'éditeur.
Propriété publiqueEditingControlRowIndexObtient ou définit l'index de la ligne parente de la cellule d'hébergement.
Propriété publiqueEditingControlValueChangedObtient ou définit une valeur indiquant si la valeur du contrôle d'édition diffère de la valeur de la cellule d'hébergement.
Propriété publiqueEditingPanelCursorObtient le curseur utilisé lorsque le pointeur de la souris se trouve sur DataGridView.EditingPanel mais pas sur le contrôle d'édition.
Propriété publiqueRepositionEditingControlOnValueChangeObtient ou définit une valeur indiquant si le contenu de la cellule doit être repositionné à chaque fois que la valeur change.
Début
  NomDescription
Méthode publiqueApplyCellStyleToEditingControlModifie l'interface utilisateur du contrôle pour être qu'elle soit cohérente avec le style de cellule spécifié.
Méthode publiqueEditingControlWantsInputKeyDétermine si la touche spécifiée est une touche de saisie normale que le contrôle d'édition doit traiter ou une touche spéciale que le DataGridView doit traiter.
Méthode publiqueGetEditingControlFormattedValueRécupère la valeur mise en forme de la cellule.
Méthode publiquePrepareEditingControlForEditPrépare la cellule actuellement sélectionnée pour la modification.
Début

Cette interface est implémentée par les contrôles, tels que DataGridViewComboBoxEditingControl et DataGridViewTextBoxEditingControl qui sont hébergés par les cellules DataGridView correspondantes, telles que DataGridViewComboBoxCell et DataGridViewTextBoxCell lorsqu'ils sont en mode édition.

Les types de cellules qui hébergent les contrôles d'édition hôtes affectent un Type représentant le type du contrôle d'édition à leur propriété EditType. Lorsque la cellule est en mode édition, les étapes suivantes sont exécutées :

  1. Le contrôle DataGridView crée une instance du type de contrôle d'édition.

  2. Le contrôle DataGridView appelle la méthode InitializeEditingControl de la cellule. Vous pouvez substituer cette méthode pour transférer la valeur de la cellule au contrôle d'édition.

  3. Le contrôle DataGridView appelle la méthode ApplyCellStyleToEditingControl du contrôle d'édition et passe le style actuel de la cellule. Vous pouvez implémenter cette méthode pour initialiser l'apparence du contrôle d'édition afin qu'il corresponde à l'apparence de la cellule.

  4. Le contrôle DataGridView appelle la méthode PrepareEditingControlForEdit du contrôle d'édition. Vous pouvez implémenter cette méthode pour effectuer les derniers ajustements du contrôle d'édition, par exemple la sélection de la valeur du contrôle.

Pour plus d'informations sur l'implémentation de IDataGridViewEditingControl, consultez Comment : héberger des contrôles dans des cellules DataGridView Windows Forms.

Les types de cellules, comme DataGridViewCheckBoxCell, qui fournissent une interface utilisateur pour spécifier des valeurs sans héberger un contrôle d'édition implémentent l'interface IDataGridViewEditingCell. L'interface utilisateur dans ce cas est affichée que la cellule soit en mode édition ou non.

D'autres types de cellules, tels que DataGridViewButtonCell, fournissent une interface utilisateur, mais ne stockent pas de valeurs spécifiées par l'utilisateur. Dans ce cas, le type de cellule n'implémente pas IDataGridViewEditingCell ni n'héberge un contrôle d'édition.

L'exemple de code suivant fournit une implémentation de cette interface qui dérive de DateTimePicker. Cet exemple est extrait d'un exemple plus développé disponible dans Comment : héberger des contrôles dans des cellules DataGridView Windows Forms.


class CalendarEditingControl : DateTimePicker, IDataGridViewEditingControl
{
    DataGridView dataGridView;
    private bool valueChanged = false;
    int rowIndex;

    public CalendarEditingControl()
    {
        this.Format = DateTimePickerFormat.Short;
    }

    // Implements the IDataGridViewEditingControl.EditingControlFormattedValue 
    // property.
    public object EditingControlFormattedValue
    {
        get
        {
            return this.Value.ToShortDateString();
        }
        set
        {            
            if (value is String)
            {
                try
                {
                    // This will throw an exception of the string is 
                    // null, empty, or not in the format of a date.
                    this.Value = DateTime.Parse((String)value);
                }
                catch
                {
                    // In the case of an exception, just use the 
                    // default value so we're not left with a null
                    // value.
                    this.Value = DateTime.Now;
                }
            }
        }
    }

    // Implements the 
    // IDataGridViewEditingControl.GetEditingControlFormattedValue method.
    public object GetEditingControlFormattedValue(
        DataGridViewDataErrorContexts context)
    {
        return EditingControlFormattedValue;
    }

    // Implements the 
    // IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
    public void ApplyCellStyleToEditingControl(
        DataGridViewCellStyle dataGridViewCellStyle)
    {
        this.Font = dataGridViewCellStyle.Font;
        this.CalendarForeColor = dataGridViewCellStyle.ForeColor;
        this.CalendarMonthBackground = dataGridViewCellStyle.BackColor;
    }

    // Implements the IDataGridViewEditingControl.EditingControlRowIndex 
    // property.
    public int EditingControlRowIndex
    {
        get
        {
            return rowIndex;
        }
        set
        {
            rowIndex = value;
        }
    }

    // Implements the IDataGridViewEditingControl.EditingControlWantsInputKey 
    // method.
    public bool EditingControlWantsInputKey(
        Keys key, bool dataGridViewWantsInputKey)
    {
        // Let the DateTimePicker handle the keys listed.
        switch (key & Keys.KeyCode)
        {
            case Keys.Left:
            case Keys.Up:
            case Keys.Down:
            case Keys.Right:
            case Keys.Home:
            case Keys.End:
            case Keys.PageDown:
            case Keys.PageUp:
                return true;
            default:
                return !dataGridViewWantsInputKey;
        }
    }

    // Implements the IDataGridViewEditingControl.PrepareEditingControlForEdit 
    // method.
    public void PrepareEditingControlForEdit(bool selectAll)
    {
        // No preparation needs to be done.
    }

    // Implements the IDataGridViewEditingControl
    // .RepositionEditingControlOnValueChange property.
    public bool RepositionEditingControlOnValueChange
    {
        get
        {
            return false;
        }
    }

    // Implements the IDataGridViewEditingControl
    // .EditingControlDataGridView property.
    public DataGridView EditingControlDataGridView
    {
        get
        {
            return dataGridView;
        }
        set
        {
            dataGridView = value;
        }
    }

    // Implements the IDataGridViewEditingControl
    // .EditingControlValueChanged property.
    public bool EditingControlValueChanged
    {
        get
        {
            return valueChanged;
        }
        set
        {
            valueChanged = value;
        }
    }

    // Implements the IDataGridViewEditingControl
    // .EditingPanelCursor property.
    public Cursor EditingPanelCursor
    {
        get
        {
            return base.Cursor;
        }
    }

    protected override void OnValueChanged(EventArgs eventargs)
    {
        // Notify the DataGridView that the contents of the cell
        // have changed.
        valueChanged = true;
        this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
        base.OnValueChanged(eventargs);
    }
}


.NET Framework

Pris en charge dans : 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

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.
Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
© 2013 Microsoft. Tous droits réservés.