2009-03-18 5 views
4

폼을 호출하는 com 클래스가있는 .net 클래스 라이브러리가 있습니다. 양식 글꼴이 멋지게 보이도록 SetCompatibleTextRenderingDefault(false)으로 보내려고합니다.형식을 포함하는 .NET 클래스 라이브러리의 SetCompatibleTextRenderingDefault

나는 다음과 같은 오류 얻을 클래스 생성자에서 명령을 실행하는 경우 : SetCompatibleTextRenderingDefault must be called before the first IWin32Window object is created in the application.

가/I이 실행해야 할 수 있습니다? 새 하위보다 더 빠른 장소가 없습니다.

EDIT1 사전에

감사 : 닷넷 테스트 장치에서 클래스를 시작할 때 그때 나는 단순히 "자동화를 얻을 VB6 응용 프로그램에서 호출 할 경우 명확히하기 위해, 나는이 오류 오류 "

Edit2 : vb6 응용 프로그램에서 호출 할 때 com 클래스에 SetCompatibleTextRenderingDefault을 사용할 수 없다는 대답입니까? 어쩌면이 메소드를 호출해야하는 "상위"응용 프로그램 일 수도 있고 vb6 응용 프로그램과 같이 할 수없는 응용 프로그램 일 수도 있습니다.

편집 3 : 아마도이 질문을 잘못된 방식으로 묻는 것입니다. - 어쩌면 질문 : vb6 응용 프로그램에서 호출 된 .net 클래스 라이브러리 양식에서 글꼴을 멋지게 보이게하려면 어떻게해야합니까?

답변

2

가능한 해결 방법은 양식 생성자의 모든 버튼과 라벨에 수동으로 속성을 설정하는 것입니다 :이 양식을 호출하는 기능을 가진 클래스이기 때문에

public Form1() 
{ 
    InitializeComponent(); 
    DisableCompatibleTextRendering(this); 
} 

private static void DisableCompatibleTextRendering(Control c) 
{ 
    var button = (c as ButtonBase); 
    var label = (c as Label); 

    if (button != null) 
    { 
     button.UseCompatibleTextRendering = false; 
    } 

    if (label != null) 
    { 
     label.UseCompatibleTextRendering = false; 
    } 

    foreach (var child in c.Controls.Cast<Control>()) 
    { 
     DisableCompatibleTextRendering(child); 
    } 
} 
+0

나는 이렇게 할거야. 답을 주셔서 고마워. – wheelibin

+0

옛날 질문이지만, 똑같은 문제가 생겼어. 내 텍스트 상자에 이걸 써야 해. 텍스트 상자에서이 작업을 수행 할 수있는 방법이 있습니까? thnx. – ibram

0

첫 번째 창을 만들기 전에이를 응용 프로그램 시작 코드 안에 넣으십시오. C#에서는 메인 루틴이되어 초기 창을 만듭니다.

+0

, 그때 인상였습니다 sub New는 "응용 프로그램 시작 코드"입니까? – wheelibin

관련 문제