2009-05-19 2 views
0

우리의 응용 프로그램에는 여러 개의 찾기 대화 상자가 있습니다. 찾기 대화 상자의 UI는 간단합니다 (텍스트 상자, DataGridview 결과, ok 단추, 취소 단추). 다른 대화 상자 사이의 유일한 실제 변경 사항은 일부 레이블 텍스트와 그리드 바인딩 소스입니다. 특정 행렬 선택 및 읽기 전용 모드와 같은 특정 속성과 클릭 및 더블 클릭과 같은 이벤트를 적용하여 대화 상자를 추가하려는 경우 해당 대화 상자가 동일한 동작을 구현하므로 사용자가 일관된 동작을 얻을 수 있습니다. 응용 프로그램의 모든 다른 대화 상자에서 구현하는 속성 및 이벤트DataGridView는 응용 프로그램 전체의 일관성을 보장합니다.

일부 속성과 ok/cancel 버튼 + 클릭 이벤트를 호스팅하는 기본 찾기 양식을 만들었습니다. 나는 datagridview에 붙어있어. 우리의 찾기 대화 상자에서 모든 datagridviews가 유사한 특성을 공유하도록하는 최선의 방법은 무엇입니까?

답변

0

오늘 DataGridView에서 내려 오는 사용자 지정 그리드 (DataGridViewFinder)를 구현했습니다. 이 그리드는 Finder 대화 상자에만 적용됩니다. 그리드에는 다른 모든 finder 그리드와 일치하도록 기본 속성이 설정되어 있습니다. 또한이 유형의 그리드는 찾기 대화 상자에만있을 것이므로 기본 속성에서 속성을 설정하고 메서드를 호출 할 이벤트를 재정의했습니다.

필자는 사용자 정의 그리드를 파인더 대화 상자에 놓을 때 특정 속성과 이벤트가 이미 처리되었음을 보장하기 때문에이 접근 방식을 좋아합니다. 많은 찾기 대화 상자가있을 것이고 이것이 많은 시간을 절약 할 것으로 생각됩니다. 아무도이 구현에 잘못된 것을 본 적이 있습니까?

protected override void OnEnter(EventArgs e) 
{ 
    base.OnEnter(e); 
    if (Parent is BaseFinder) 
    { 
     (Parent as BaseFinder).Mode = FinderMode.Ok; 
    } 
} 

protected override void OnDoubleClick(EventArgs e) 
{ 
    base.OnDoubleClick(e); 
    if (Parent is BaseFinder) 
    { 
     (Parent as BaseFinder).btOk_Click(this, e); 
    } 
} 
2

다른 대화 상자의 유일한 차이점은 일부 레이블의 텍스트와 DataGridview의 바인딩 소스 인 경우 모든 대화 상자에 동일한 양식을 사용하지 않는 이유는 무엇입니까? 이러한 차이점을 제어 할 수있는 양식을 양식에 쉽게 표시 할 수 있습니다.

+0

그리드에서 바인딩 데이터 소스를 설정할 때 시각적 스튜디오 디자인 시간을 낭비하고 싶지 않습니다. 아마도 DataGridView에서 파생 된 그리드를 만들어 이러한 속성과 메서드를 적용해야합니다. –

관련 문제