DataGridViewCell.InitializeEditingControl(Int32, Object, DataGridViewCellStyle) 메서드

정의

셀을 편집하는 데 사용되는 컨트롤을 초기화합니다.Initializes the control used to edit the cell.

public:
 virtual void InitializeEditingControl(int rowIndex, System::Object ^ initialFormattedValue, System::Windows::Forms::DataGridViewCellStyle ^ dataGridViewCellStyle);
public virtual void InitializeEditingControl (int rowIndex, object initialFormattedValue, System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle);
abstract member InitializeEditingControl : int * obj * System.Windows.Forms.DataGridViewCellStyle -> unit
override this.InitializeEditingControl : int * obj * System.Windows.Forms.DataGridViewCellStyle -> unit

매개 변수

rowIndex
Int32

셀 위치의 행 인덱스(0부터 시작)입니다.The zero-based row index of the cell's location.

initialFormattedValue
Object

편집이 시작될 때 셀에 표시되는 값을 나타내는 Object입니다.An Object that represents the value displayed by the cell when editing is started.

dataGridViewCellStyle
DataGridViewCellStyle

셀의 스타일을 나타내는 DataGridViewCellStyle입니다.A DataGridViewCellStyle that represents the style of the cell.

예외

연결된 DataGridView가 없는 경우나 있더라도 연결된 편집 컨트롤이 없는 경우There is no associated DataGridView or if one is present, it does not have an associated editing control.

예제

다음 코드 예제에서는 DataGridViewTextBoxCell 클래스에서 파생 되는 간단한 클래스에서 InitializeEditingControl 메서드를 재정의 하는 방법을 보여 줍니다.The following code example demonstrates how to override the InitializeEditingControl method in a simple class that derives from the DataGridViewTextBoxCell class. 이 예제는 방법에서 제공 하는 더 큰 코드 예제의 일부입니다. Windows Forms DataGridView 셀의 호스트 컨트롤입니다.This example is part of a larger code example provided in How to: Host Controls in Windows Forms DataGridView Cells.

public class CalendarCell : DataGridViewTextBoxCell
{

    public CalendarCell()
        : base()
    {
        // Use the short date format.
        this.Style.Format = "d";
    }

    public override void InitializeEditingControl(int rowIndex, object 
        initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
    {
        // Set the value of the editing control to the current cell value.
        base.InitializeEditingControl(rowIndex, initialFormattedValue, 
            dataGridViewCellStyle);
        CalendarEditingControl ctl = 
            DataGridView.EditingControl as CalendarEditingControl;
        // Use the default row value when Value property is null.
        if (this.Value == null)
        {
            ctl.Value = (DateTime)this.DefaultNewRowValue;
        }
        else
        {
            ctl.Value = (DateTime)this.Value;
        }
    }

    public override Type EditType
    {
        get
        {
            // Return the type of the editing control that CalendarCell uses.
            return typeof(CalendarEditingControl);
        }
    }

    public override Type ValueType
    {
        get
        {
            // Return the type of the value that CalendarCell contains.
            
            return typeof(DateTime);
        }
    }

    public override object DefaultNewRowValue
    {
        get
        {
            // Use the current date and time as the default value.
            return DateTime.Now;
        }
    }
}
Public Class CalendarCell
    Inherits DataGridViewTextBoxCell

    Public Sub New()
        ' Use the short date format.
        Me.Style.Format = "d"
    End Sub

    Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, _
        ByVal initialFormattedValue As Object, _
        ByVal dataGridViewCellStyle As DataGridViewCellStyle)

        ' Set the value of the editing control to the current cell value.
        MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, _
            dataGridViewCellStyle)

        Dim ctl As CalendarEditingControl = _
            CType(DataGridView.EditingControl, CalendarEditingControl)

        ' Use the default row value when Value property is null.
        If (Me.Value Is Nothing) Then
            ctl.Value = CType(Me.DefaultNewRowValue, DateTime)
        Else
            ctl.Value = CType(Me.Value, DateTime)
        End If
    End Sub

    Public Overrides ReadOnly Property EditType() As Type
        Get
            ' Return the type of the editing control that CalendarCell uses.
            Return GetType(CalendarEditingControl)
        End Get
    End Property

    Public Overrides ReadOnly Property ValueType() As Type
        Get
            ' Return the type of the value that CalendarCell contains.
            Return GetType(DateTime)
        End Get
    End Property

    Public Overrides ReadOnly Property DefaultNewRowValue() As Object
        Get
            ' Use the current date and time as the default value.
            Return DateTime.Now
        End Get
    End Property

End Class

설명

최적화 기술로, 일반적으로 동일한 형식의 모든 셀과 동일한 DataGridView에 있는 단일 호스팅된 편집 컨트롤을 공유 합니다.As an optimization technique, typically all the cells of the same type and in the same DataGridView share a single hosted editing control. 그러나 셀에서 컨트롤을 사용 하려면 먼저 InitializeEditingControl 메서드를 사용 하 여 컨트롤을 초기화 해야 합니다.However, before the control is used by a cell, it needs to be initialized by the InitializeEditingControl method. 이 메서드는 처음 호출 될 때 해당 부모 DataGridView의 편집 컨트롤 목록에 컨트롤을 추가 합니다.The first time it is called, this method adds the control to the list of editing controls in its parent DataGridView. 또한 셀의 일부 시각적 속성을 초기화 합니다.It also initializes some of the visual properties of the cell. 예를 들어 InitializeEditingControl는 제공 된 셀 스타일 매개 변수와 일치 하도록 편집 영역의 배경색을 설정 합니다.For example, InitializeEditingControl sets the background color of the editing area to match the supplied cell style parameter. InitializeEditingControl에 대 한 후속 호출은 아무 작업도 수행 하지 않습니다.Subsequent calls to InitializeEditingControl do nothing.

파생 클래스는이 메서드를 사용 하 여 해당 형식에 해당 하는 Control 클래스의 인스턴스를 호스팅합니다.Derived classes use this method to host an instance of the Control class corresponding to their type. 예를 들어 하나 이상의 DataGridViewTextBoxCell 개체가 포함 된 테이블은이 메서드를 호출 하 여 소유 하는 DataGridView에 단일 TextBox 편집 컨트롤을 추가 합니다.For example, a table that contains one or more DataGridViewTextBoxCell objects calls this method to add a single TextBox editing control to the owning DataGridView.

적용 대상

추가 정보