내보내기(0) 인쇄
모두 확장
확장 최소화

DataGridView.CellFormatting 이벤트

참고: 이 이벤트는 .NET Framework 버전 2.0에서 새로 추가되었습니다.

표시를 위해 셀 내용의 서식을 지정해야 하는 경우 발생합니다.

네임스페이스: System.Windows.Forms
어셈블리: System.Windows.Forms(system.windows.forms.dll)

public event DataGridViewCellFormattingEventHandler CellFormatting
/** @event */
public void add_CellFormatting (DataGridViewCellFormattingEventHandler value)

/** @event */
public void remove_CellFormatting (DataGridViewCellFormattingEventHandler value)

JScript에서는 이벤트를 사용할 수 있지만 새로 선언할 수는 없습니다.

기본적으로 DataGridView 컨트롤은 셀의 값을 표시에 적합한 서식으로 변환하려고 합니다. 예를 들어, 이 컨트롤은 숫자 값을 문자열로 변환하여 텍스트 상자 셀에 표시합니다. DefaultCellStyle 등의 속성에 의해 반환된 DataGridViewCellStyleFormat 속성을 설정하여 사용할 서식 규칙을 지정할 수 있습니다.

표준 서식으로 충분하지 않은 경우 CellFormatting 이벤트를 처리하여 서식을 사용자 지정할 수 있습니다. 이 이벤트를 통해 배경색 및 전경색과 같은 셀 스타일뿐만 아니라 정확한 표시 값을 지정하여 셀을 표시하는 데 사용할 수 있습니다. 따라서 셀 값 자체의 서식 지정 필요성 여부에 관계없이 이 이벤트를 처리하여 모든 종류의 셀 서식을 지정할 수 있습니다.

CellFormatting 이벤트는 각 셀을 그릴 때마다 발생하므로 이 이벤트를 처리할 때는 긴 프로세스가 실행되지 않도록 해야 합니다. 또한 이 이벤트는 셀의 FormattedValue를 검색하거나 GetFormattedValue 메서드를 호출할 때도 발생합니다.

CellFormatting 이벤트를 처리할 때 ConvertEventArgs.Value 속성은 셀 값을 사용하여 초기화됩니다. 셀 값을 사용자 지정하여 표시 값으로 변환하는 경우, ConvertEventArgs.Value 속성을 변환된 값으로 설정하여 새 값이 셀의 FormattedValueType 속성에서 지정된 형식이 되도록 합니다. 값 서식 지정이 더 이상 필요 없음을 나타내려면 DataGridViewCellFormattingEventArgs.FormattingApplied 속성을 true로 설정합니다.

이벤트 처리기가 완료되었을 때 ConvertEventArgs.Value가 Null 참조(Visual Basic의 경우 Nothing)이거나 올바른 형식이 아닌 경우 또는 DataGridViewCellFormattingEventArgs.FormattingApplied 속성이 false인 경우, DataGridViewCellFormattingEventArgs.CellStyle 속성(셀의 InheritedStyle 속성을 사용하여 초기화됨)에 의해 반환된 셀 스타일의 Format, NullValue, DataSourceNullValueFormatProvider 속성을 사용하여 Value의 서식이 지정됩니다.

DataGridViewCellFormattingEventArgs.FormattingApplied 속성의 값에 관계없이 DataGridViewCellFormattingEventArgs.CellStyle 속성에 의해 반환된 개체의 표시 속성을 사용하여 셀이 렌더링됩니다.

CellFormatting 이벤트를 사용하여 서식을 사용자 지정하는 방법에 대한 자세한 내용은 방법: Windows Forms DataGridView 컨트롤에서 데이터 형식 사용자 지정을 참조하십시오.

이 이벤트를 처리할 때 성능이 저하되지 않도록 하려면 셀에 직접 액세스하지 말고 이벤트 처리기의 매개 변수를 통해 셀에 액세스합니다.

서식이 지정된 사용자 지정 값을 실제 셀 값으로 변환하는 방식을 사용자 지정하려면 CellParsing 이벤트를 처리합니다.

이벤트 처리에 대한 자세한 내용은 이벤트 사용을 참조하십시오.

다음 코드 예제에서는 CellFormatting 이벤트를 처리하는 방법을 보여 줍니다.

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // If the column is the Artist column, check the
    // value.
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Artist")
    {
        if (e.Value != null)
        {
            // Check for the string "pink" in the cell.
            string stringValue = (string)e.Value;
            stringValue = stringValue.ToLower();
            if ((stringValue.IndexOf("pink") > -1))
            {
                e.CellStyle.BackColor = Color.Pink;
            }

        }
    }
    else if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Release Date")
    {
        ShortFormDateFormat(e);
    }
}

//Even though the date internaly stores the year as YYYY, using formatting, the
//UI can have the format in YY.  
private static void ShortFormDateFormat(DataGridViewCellFormattingEventArgs formatting)
{
    if (formatting.Value != null)
    {
        try
        {
            System.Text.StringBuilder dateString = new System.Text.StringBuilder();
            DateTime theDate = DateTime.Parse(formatting.Value.ToString());

            dateString.Append(theDate.Month);
            dateString.Append("/");
            dateString.Append(theDate.Day);
            dateString.Append("/");
            dateString.Append(theDate.Year.ToString().Substring(2));
            formatting.Value = dateString.ToString();
            formatting.FormattingApplied = true;
        }
        catch (FormatException)
        {
            // Set to false in case there are other handlers interested trying to
            // format this DataGridViewCellFormattingEventArgs instance.
            formatting.FormattingApplied = false;
        }
    }
}

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

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

.NET Framework

2.0에서 지원

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft