Questa documentazione è stata archiviata e non viene gestita.

Interfaccia IDataGridViewEditingControl

Aggiornamento: novembre 2007

Definisce la funzionalità comune per i controlli contenuti nelle celle di un oggetto DataGridView.

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public interface IDataGridViewEditingControl
public interface IDataGridViewEditingControl
public interface IDataGridViewEditingControl

Questa interfaccia viene implementata da controlli, quali DataGridViewComboBoxEditingControl e DataGridViewTextBoxEditingControl, contenuti nelle celle DataGridView corrispondenti, quali DataGridViewComboBoxCell e DataGridViewTextBoxCell, quando sono in modalità di modifica.

La proprietà EditType dei tipi di cella che possono contenere i controlli di modifica viene impostata su una classe Type che rappresenta il tipo di controllo di modifica. Quando la cella passa alla modalità di modifica, vengono eseguiti i passaggi riportati di seguito:

  1. Il controllo DataGridView crea un'istanza del tipo di controllo di modifica.

  2. Il controllo DataGridView chiama il metodo InitializeEditingControl della cella. È possibile eseguire l'override di questo metodo per trasferire il valore della cella al controllo di modifica.

  3. Il controllo DataGridView chiama il metodo ApplyCellStyleToEditingControl del controllo di modifica e passa nello stile corrente della cella. È possibile implementare questo metodo per inizializzare l'aspetto del controllo di modifica in modo da corrispondere all'aspetto della cella.

  4. Il controllo DataGridView chiama il metodo PrepareEditingControlForEdit del controllo di modifica. È possibile implementare questo metodo per effettuare le regolazioni finali al controllo di modifica, ad esempio selezionare il valore del controllo.

Per ulteriori informazioni sull'implementazione di IDataGridViewEditingControl, vedere Procedura: inserire controlli in celle del controllo DataGridView di Windows Form.

I tipi di cella, quali DataGridViewCheckBoxCell, che forniscono un'interfaccia utente (UI) per la specifica dei valori senza contenere un controllo di modifica implementano l'interfaccia IDataGridViewEditingCell. In questo caso l'interfaccia utente viene visualizzata indipendentemente dal fatto che per la cella sia attivata la modalità di modifica.

Altri tipi di cella, ad esempio DataGridViewButtonCell, forniscono un'interfaccia utente ma non memorizzano valori specificati dall'utente. In questo caso, il tipo di cella non implementa IDataGridViewEditingCell né contiene un controllo di modifica.

Nell'esempio di codice riportato di seguito viene fornita un'implementazione di questa interfaccia derivata dall'oggetto DateTimePicker. Questo esempio fa parte di un esempio più esaustivo disponibile in Procedura: inserire controlli in celle del controllo DataGridView di Windows Form.

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)
            {
                this.Value = DateTime.Parse((String)value);
            }
        }
    }

    // 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);
    }
}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition , Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0
Mostra: