エクスポート (0) 印刷
すべて展開

IDataGridViewEditingControl インターフェイス

DataGridView のセル内にホストされるコントロールの共通する機能を定義します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

public interface IDataGridViewEditingControl
public interface IDataGridViewEditingControl
public interface IDataGridViewEditingControl
適用できません。

このインターフェイスは、DataGridViewComboBoxCellDataGridViewTextBoxCell などの DataGridView のセルが編集モードのときにホストする、DataGridViewComboBoxEditingControlDataGridViewTextBoxEditingControl などの対応するコントロールが実装します。

編集コントロールをホストできるセル型では、EditType プロパティが、編集コントロールの型を表す Type に設定されます。セルが編集モードに移行すると、次の手順が実行されます。

  1. DataGridView コントロールによって編集コントロールの型のインスタンスが作成されます。

  2. DataGridView コントロールによってセルの InitializeEditingControl メソッドが呼び出されます。このメソッドをオーバーライドして、セルの値を編集コントロールに転送できます。

  3. DataGridView コントロールによって編集コントロールの ApplyCellStyleToEditingControl メソッドが呼び出され、セルの現在のスタイルが渡されます。このメソッドを実装して、セルの外観と一致するように編集コントロールの外観を初期化することができます。

  4. DataGridView コントロールによって編集コントロールの PrepareEditingControlForEdit メソッドが呼び出されます。このメソッドを実装して、コントロールの値の選択など、編集コントロールの最終調整を行うことができます。

IDataGridViewEditingControl の実装方法の詳細については、「方法 : Windows フォーム DataGridView Cells でコントロールをホストする」を参照してください。

編集コントロールをホストせずに値を指定するためのユーザー インターフェイス (UI) を提供する DataGridViewCheckBoxCell などのセル型は、IDataGridViewEditingCell インターフェイスを実装します。この場合、セルが編集モードであるかどうかにかかわらず、UI が表示されます。

DataGridViewButtonCell など、その他のセルでは、UI は表示されますが、ユーザーが指定した値は格納されません。この場合、セル型は、IDataGridViewEditingCell を実装することも、編集コントロールをホストすることもありません。

DateTimePicker を継承するこのインターフェイスの実装を次のコード例に示します。次の例は「方法 : Windows フォーム DataGridView Cells でコントロールをホストする」で取り上げている例の一部です。

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 false;
        }
    }

    // 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 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

.NET Framework

サポート対象 : 3.0,2.0

コミュニティの追加

追加
表示:
© 2014 Microsoft