2011-05-16 4 views
0

Designer에이 속성이있는 컨트롤을 만들 때 디자이너에서 생성되지 않도록 속성에 DefaultValue를 사용합니다. 그러나 데이터 유형이있는 속성은 표준이 아닙니다. 예 : 이미지, 기본값을 만드는 방법. 감사.디자이너에서 생성되지 않은 속성 만들기

이 예제 코드입니다 :

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Windows.Forms; 
using System.Drawing; 
using System.ComponentModel; 

namespace DemoChart 
{ 
    public class MyControl : Control 
    { 
    private Image m_Img = DemoChart.Properties.Resources.link; 

    [DefaultValue("DemoChart.Properties.Resources.link")] 
    public Image Img 
    { 
     get { return m_Img; } 
     set { m_Img = value; } 
    } 

    public MyControl() 
    { 
    } 
    } 
} 

참고 : DemoChart.Properties.Resources.link 내가 프로젝트에 추가 할 이미지 자원입니다.

Form1이라는 폼을 만들고이 폼에 MyControl을 끌어 오면 이름은 myControl1입니다. 생성 된 코드를 보려면 Form1.designer.cs를 열고 myControl1의 Img 속성을 볼 수 있습니다. 왜? DefaultValue를 사용하지만 영향을주지 않습니다. 도와주세요. 감사.

+0

오류가 발생합니까? 당신은 빈 그림을 얻습니까? – soandos

+0

'Img' 속성이 이미지를 반환합니까? – jams

+0

질문이 업데이트되었습니다. 도와주세요. 감사. –

답변

1

코드에서 String 값을 Image 속성 인 DefaultValueAttribute에 할당합니다. 이렇게하면 DefaultValueAttribute을 사용할 수 없습니다.

디자이너가 DefaultValueAttribute이 적합하지 않은 곳에서 작업하려면 두 가지 방법, 즉 ResetPropertyNameShouldSerializePropertyName을 작성해야합니다.

: 이 두 가지 방법

귀하의 코드가 같은 것을이되어야 .designer.cs에 원치 않는 코드를 생성 파일을 메뉴 명령을 다시 활성화하고 방지 속성 대신에 디자이너에 의해 사용됩니다

private Image m_Img = DefaultImg; 
public Image Img 
{ 
    get { return m_Img; } 
    set { m_Img = value; } 
} 

private static readonly Image DefaultImg = DemoChart.Properties.Resources.link; 
private void ResetImg() { Img = DefaultImg; } 
private bool ShouldSerializeImg() { return (Img != DefaultImg); } 
관련 문제