2011-05-06 1 views
0

designer.cs에 연재 GridIdentifier 호출되는 :는, 내가 유일하게 내 프로젝트의 모든 gridcontrol을 식별 할 구성 요소에 새로운 속성을 추가

public class MyCustomGridControl : GridControl 
{ 
    private string gridIdentifier = "empty"; 

    [Browsable(true)] 
    [DefaultValue("empty")] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    public string GridIdentifier 
    { 
     get { return gridIdentifier; } 
     set { gridIdentifier = value; } 
    } 

    public MyCustomGridControl() 
    { 
     if (this.gridIdentifier == "empty") 
      this.gridIdentifier = Guid.NewGuid().ToString(); 
    } 
} 

문제는 기존의 컨트롤 양식 내에서 양식 (무언가)을 변경 한 후에 만 ​​양식이 새 특성을 직렬화합니다. 폼, 크기 등의 캡션 일 수도 있습니다.

하지만 내가보고 싶은 것은 폼을 열면 변경되었음을 감지하여 저장할 수 있고 새 속성이 직렬화됩니다. .

양식을 연 후에 새 속성이 저장되지 않는 이유와 해결 방법을 알고있는 사람이 있습니까? 물론 도움이되는 다른 아이디어도 환영합니다.

답변

0

내가 검사의 기본 정신을하고 추측 것 (즉, 아무것도 변경한다) - 내가 찾고 있어요 - (나는 그것이 부작용을 일으킬 수있는 파일을 열 때 싫어 예기치 않은 소스 코드 변경을 방지하기 위해 당신, DBML!).

public bool ShouldSerializeGridIdentifier() { return true; } 
bool ShouldSerialize*()

void Reset*()이 프레임 워크에 의해 사용되는 규칙은 다음과 같습니다 보조 노트에

는, (나는 그것이 인해 위의에 적용됩니다 생각하지 않는다) 일반적으로
직렬화 을 강제로.

+0

답장을 보내 주셔서 감사합니다. ** 새로운 ** 컨트롤로 인해 ** designer ** 코드에서 예상치 못한 소스 코드가 변경되는 양식을 보았습니다. 사이드 노트 : ShouldSerialize *() 및 Reset *() 대신 DefaultValueAttribute를 사용할 수 있습니다 [link] (http://msdn.microsoft.com/en-us/library/53b8022e%28v=VS) .100 % 29.aspx) – Martin