2014-04-25 2 views
-1

모두,글꼴 개체는 InitializeComponent에 처분

나는 winform을 디자인하는 동안 한 가지를 알아 차렸다. 나는 레이블 중 하나에 글꼴 속성을 적용 form.designer.cs InitializeComponent() 그물에 부착 된 코드를 생성 것을 보았다 : 컨트롤이 InitializeComponent에서 진행 한 다음

this.Lable1.Font=new Font("Arial", 20, .........) 

지금이 새로운 Font 개체가 처리되지 않습니다. 내 양식에 20 개의 다른 개체가있는 경우 적어도 20 개의 다른 글꼴 개체가 표시됩니다. 재조정으로

내가 InitializeComponent()

Font font1=new Font("Arial",20,"".......) 
Lable1.Font=font1; 
font1.dispose(); 

에 다음 줄을 넣어 시도 건가요 내가 모르는 뭔가가? 또는이 .net은 글꼴을 처리하고 잠재적으로 Font 개체를 남깁니다.

답변

2

리소스를 즉시 처분하면 나머지 평생 동안 리소스를 사용할 수 없습니다.

FontForm이 인스턴스화 될 때 인스턴스화됩니다. Form을 닫으면 Font 인스턴스 (및 InitializeComponent() 메서드에서 생성 된 다른 것)는 범위를 벗어나 폐기됩니다.

Designer.cs 파일의 모든 항목을있는 그대로 두십시오.

코드 편집기로이 메서드의 내용을 수정하지 마십시오.

모든 사용자 지정 편집 내용은 디자인 타임에 양식을 다른 것으로 변경하기 시작할 때 어쨌든 덮어 쓰기 쉽습니다. 일반적으로 사용자가 필요하거나 만지기 원하는 파일이 아닙니다.

+0

글꼴이 삭제 된 경우 해당 글꼴로 그릴 수 없지만 * 여전히 글꼴을 컨트롤의 'Font'속성에 할당 할 수 있습니다. 무슨 일이 일어날 것 같아요 컨트롤의'글꼴'속성 setter 할당 된 글꼴의 특성을 읽고 컨트롤 자신의 사용을위한 새로운 하나를 만듭니다,하지만 나는 잘 모르겠다. 어디에서나 문서화 된 실제 동작을 찾을 수 없으며 'Font'의 노출 된 메서드와 속성은 전시를 제어하는 ​​동작을 수행하기에 충분하지 않습니다. – supercat

1

프레임 워크는 부모 개체를 처리 할 때 자동으로 삭제합니다 (Control 또는 Form).

부모 컨트롤이 닫히면 자동으로 Dispose 메서드가 호출되어 종료됩니다.

또한 InitializeComponents에 글꼴을 배치하는 것은 좋지 않습니다. 클래스 수준에서 변수를 만들고 Dispose 메서드에서 처리하십시오. 그러나 위에서 설명한대로, 나는 당신이 이것을 필요로하지 않는다고 생각합니다.