Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IDataGridViewEditingControl-Schnittstelle

 

Veröffentlicht: Oktober 2016

Definiert gemeinsame Funktionen für Steuerelemente, die innerhalb von Zellen gehostet werden ein DataGridView.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public interface IDataGridViewEditingControl

NameBeschreibung
System_CAPS_pubpropertyEditingControlDataGridView

Ruft ab oder legt die DataGridView die die Zelle enthält.

System_CAPS_pubpropertyEditingControlFormattedValue

Ruft ab oder legt den formatierten Wert der Zelle im Editor geändert werden.

System_CAPS_pubpropertyEditingControlRowIndex

Ruft ab oder legt den Index der übergeordneten Zeile der besitzenden Zelle.

System_CAPS_pubpropertyEditingControlValueChanged

Ruft ab oder legt einen Wert, der angibt, ob der Wert des Bearbeitungssteuerelements vom Wert der übergeordneten Zelle unterscheidet.

System_CAPS_pubpropertyEditingPanelCursor

Ruft den Cursor verwendet, wenn der Mauszeiger über die DataGridView.EditingPanel jedoch nicht über das Bearbeitungssteuerelement.

System_CAPS_pubpropertyRepositionEditingControlOnValueChange

Ruft ab oder legt einen Wert, der angibt, ob der Zelleninhalt positioniert werden muss neu, wenn der Wert geändert.

NameBeschreibung
System_CAPS_pubmethodApplyCellStyleToEditingControl(DataGridViewCellStyle)

Ändert das Steuerelement-Benutzeroberfläche (UI) mit dem angegebenen Zellenstil konsistent sein.

System_CAPS_pubmethodEditingControlWantsInputKey(Keys, Boolean)

Bestimmt, ob der angegebene Schlüssel ist eine normale Eingabetaste, die das Bearbeitungssteuerelement verarbeitet werden soll, oder ein speziellen Schlüssel, die DataGridView verarbeiten soll.

System_CAPS_pubmethodGetEditingControlFormattedValue(DataGridViewDataErrorContexts)

Ruft den formatierten Wert der Zelle ab.

System_CAPS_pubmethodPrepareEditingControlForEdit(Boolean)

Bereitet die derzeit ausgewählte Zelle für die Bearbeitung vor.

Diese Schnittstelle wird von Steuerelementen implementiert, z. B. DataGridViewComboBoxEditingControl und DataGridViewTextBoxEditingControl, die von den entsprechenden gehostet werden DataGridView Zellen, wie z. B. DataGridViewComboBoxCell und DataGridViewTextBoxCell, wenn sie sich im Bearbeitungsmodus befinden.

Zelltypen, die Bearbeitung festgelegt hosten, können ihre EditType Eigenschaft, um eine Type steuern, Typ des Bearbeitungssteuerelements darstellt. Wenn die Zelle den Bearbeitungsmodus wechselt, werden die folgenden Schritte ausgeführt:

  1. Die DataGridView Steuerelement erstellt eine Instanz des Typs bearbeiten.

  2. Die DataGridView Steuerelement ruft die Zelle InitializeEditingControl Methode. Sie können diese Methode zum Übertragen der Wert der Zelle in das Bearbeitungssteuerelement überschreiben.

  3. Die DataGridView Steuerelement ruft die ApplyCellStyleToEditingControl -Methode auf und übergibt den aktuellen Zellstil. Sie können diese Methode, um die Darstellung des Bearbeitungssteuerelements zu initialisieren, sodass es die Darstellung der Zelle entspricht implementieren.

  4. Die DataGridView Steuerelement ruft die PrepareEditingControlForEdit Methode. Sie können diese Methode, um das Bearbeitungssteuerelement, z. B. das Auswählen des letzten anpassen implementieren.

Weitere Informationen zum Implementieren von IDataGridViewEditingControl, finden Sie unter Gewusst wie: Hosten von Steuerelementen in DataGridView-Zellen in Windows Forms.

Zelltypen wie DataGridViewCheckBoxCell die stellen eine Benutzeroberfläche (UI) zum Angeben von Werten ohne hostet ein Bearbeitungssteuerelement enthalten, implementieren die IDataGridViewEditingCell Schnittstelle. In diesem Fall wird die Benutzeroberfläche angezeigt, unabhängig davon, ob die Zelle im Bearbeitungsmodus befindet.

Andere Zelle Typen, z. B. DataGridViewButtonCell, stellen eine Benutzeroberfläche bereit, speichern jedoch keine benutzerdefinierte Werte. In diesem Fall der Zellentyp implementiert nicht IDataGridViewEditingCell oder ein Bearbeitungssteuerelement gehostet.

Das folgende Codebeispiel stellt eine Implementierung dieser Schnittstelle, die von abgeleitet ist DateTimePicker. Dieses Beispiel ist Teil eines umfangreicheren Beispiels in Gewusst wie: Hosten von Steuerelementen in DataGridView-Zellen in 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
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: