2011-08-11 11 views
1

저는 현재 WinForms 2.0 응용 프로그램입니다. 현재 셀 (IDataGridViewEditingControl) 내에서 DataGridView와 사용자 지정 편집 컨트롤을 사용하고 있습니다.DataGridViewCellStyle.ForeColor가 예상대로 작동하지 않습니다.

현재 셀은 텍스트 상자를 상속하고 IDataGridViewEditingControl 인터페이스를 구현하는 사용자 지정 편집 컨트롤을 사용합니다. 이 컨트롤은 값을 편집하는 동안 일부 유효성 검사 논리를 수행하고 사용자 지정 편집 컨트롤의 일부 시각 효과를 DataGridView 셀에 적용하는 Leave 이벤트를 수행하기 위해 TextChanged 이벤트에 등록합니다.

이 코드는 다음과 다소 같습니다

public class CustomerTextEditingControl : CustomerTextBox, IDataGridViewEditingControl 
{ 
    ... 
    protected override void OnLeave(object sender, EventArgs e) 
    { 
     dataGridView[_col, _row].Style.BackColor = BackgroundColor; 
     dataGridView[_col, _row].Style.ForeColor = ForegroundColor; 
     ... 
    } 
    ... 
} 

여기 지금 내 문제가있다 : 셀의 배경이 제대로 수 있습니다 어떤 색상 backgroundColor로 렌더링하는 동안, 텍스트 자체가없이 항상 검은 색으로 렌더링되지 무슨 색깔 ForegroundColor입니다. 처음에는 셀의 내용에 적용되는 다른 스타일이있을 수 있다고 생각했지만 거기에는 아무 것도 찾을 수 없었습니다. 그래서 당황 스럽네요 .-)

어떤 도움을 주시면 감사하겠습니다!

감사 마크

+0

거기에 중단 점을 설정하면 ForeColor가 실제로 스타일에 할당되어 있는지 확인할 수 있습니까? –

+0

예, 할당이 실행되었습니다 – Marc

+0

그러면 이벤트 체인의 나중 시점에서 ForeColor를 재정의합니다. bahavior를 재현하는 미니멀리스트 코드를 게시하여 내 측면에서 테스트 할 수 있습니까? –

답변

1

문제 발견하십시오 DataGridView를 클래스는 서브 클래스되었으며 OnPaintCell 방법을 재정의 (override)됩니다. 계정의 유일한 스타일 속성은 BackColor ...

관련 문제