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.

?確かに新しいものよりも前の場所はありません!事前に

感謝

ジョン

EDIT1:.NETテストハーネスからクラスを開始する際に明確にするために、私はVB6のアプリからそれを呼び出す場合は、その後、私は単純に「オートメーションを取得し、このエラーが出ますエラー "

Edit2:vb6アプリケーションから呼び出すとcomクラスにSetCompatibleTextRenderingDefaultを使用できないという回答がありますか?たぶんそれはこのメソッドを呼び出す必要があり、そのようなvb6アプリはできません "親"のアプリですか?

Edit3:多分私は間違った方法でこの質問をしています! - たぶん問題は: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

関連する問題