2017-03-01 3 views
3

의 변화, 그 후컨트롤의 속성은 내가 아래 코드 등의 사용자 지정 컨트롤 및 구성 요소를 만든 디자이너

public class CustomComponent : Component 
{ 
    private string style; 
    public CustomControl Control { get; set; } 
    public string Style 
    { 
     get 
     { 
      return style; 
     } 
     set 
     { 
      style = value; 
      Control.Style = value; 
     } 
    } 
} 

public class CustomControl : Control 
{ 
    string style; 
    public string Style 
    { 
     get 
     { 
      return style; 
     } 
     set 
     { 
      style = value; 
     } 
    } 
} 

내가 형태로 형태와 구성 요소에 컨트롤을 추가 할 때 제대로 업데이트되지 않습니다. 그런 다음 Component.Control 값을 할당하십시오. 내가 구성 요소의 스타일 속성을 변경하려고하면 값을 할당 한 후 컨트롤의 스타일 속성은

Style not updated in control

내가의 스타일 속성을 클릭 한 경우, 아래의 이미지 등 디자이너 수준에서 변경되지 않습니다 그것 아래 이미지 등 업데이 트됩니다 제어,

enter image description here

답변

2

당신은 코드에서 몇 가지를 수정해야합니다. 당신의 CustomComponentStyle 속성이 변경해야 다음 Control 가져 오거나 컨트롤의 Style 값을 설정하지하지 않을 경우

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
[RefreshProperties(System.ComponentModel.RefreshProperties.All)] 
public string Style 
{ 
    get 
    { 
     if (Control != null) 
      return Control.Style; 
     else 
      return null; 
    } 
    set 
    { 
     if (Control != null) 
      Control.Style = value; 
    } 
} 

당신은 확인해야합니다. 다른 컨트롤에 속해있는 동안 멤버 변수를 정의하여 속성 값을 저장할 필요가 없습니다.

구성 요소의 속성을 serialize 할 필요가 없으므로 (제어용으로 serialize되었으므로) DesignerSerializationVisibility 특성을 사용하여 Hidden 값으로 꾸미십시오.

은 또한 당신은 당신이 당신의 구성 요소의 Style 속성을 편집 RefreshProperties 속성이 RefreshProperties.All 값을 갖는으로 장식 할 때 다른 재산 (같은 Control.Style 속성)의 변화를 보여주기 위해 PropertyGrid를 새로 고침 할 때.

+0

안녕하세요, 귀하의 제안에 따라 샘플에서 코드를 수정했습니다. 그러나 여전히 문제가 발생합니다. 컨트롤의 Style 속성이 업데이트되고 있지만 문제는 컨트롤의 "Style"속성 (구성 요소 내부에 있음)이 업데이트되지 않습니다. 컨트롤의 스타일 속성 (구성 요소 내부)을 클릭하면 업데이트됩니다. 그래서 나는 문제가 디자이너 아이템을 상쾌하게하고 있다고 생각한다. 그래서이 문제를 해결할 다른 방법을 제안 해 주시겠습니까? – Jagadeesan

+1

지금이 질문에 대한 답을 얻었습니다. 대답을 편집하고'RefreshProperties'를 추가했습니다. –

+0

이 방법이 효과가 있을지 의심 스럽습니다. 기본적으로 속성 변경은 해당 속성의 업데이트를 트리거합니다. –

관련 문제