1

私の現在の WinForms プロジェクトは Sub Main(); から起動する必要があります。これを行うには、[マイ プロジェクト] の [アプリケーション] タブにある [アプリケーション フレームワークを有効にする] オプションのチェックを外す必要があります。

私が持っているサブメインはこんな感じです。

<System.STAThread()>
Public Shared Sub Main()

    Application.EnableVisualStyles()
    'Application.SetCompatibleTextRenderingDefault(True) 
     Application.SetCompatibleTextRenderingDefault(False) 'Fix from Hans Passant
    'Application.DoEvents() 'removed per suggestion

    Application.Run(New p2Login(p2user))

    If p2user.isValidated Then

        Application.Run(New frmMAIN)

    End If

End Sub

私が直面している特定の問題は、この構成を使用すると微妙なコントロール レイアウトの違いが生じることです。たとえば、一部のラベルがコントロールにわずかに重なっており、インライン チェックボックスがわずかに左にずれているように見えます。すぐにはわからない違いが他にもあると思います。

ポイント: 1) Visual Style は、ボタンなどのコントロールに表示されます。2) 「アプリケーション フレームワークを有効にする」を再度チェックし、起動フォームを設定すると、レイアウトの問題は解消されます。

問題の例のスクリーンショット

4

1 に答える 1

2
Application.SetCompatibleTextRenderingDefault(True)

それがトラブルメーカーです。互換性のあるテキストレンダリングにより、.NET 1.xで使用されていたテキストレンダリングが可能になります。特に、Graphics.MeasureString()メソッドを使用して、Labelなどの自動サイズ設定されたコントロールのサイズを計算できます。SetCompatibleTextRenderingDefaultが存在する唯一の理由は、.NET 2.0TextRendererクラスではなくGraphicsで描画する古い.NET1.xコンポーネントがある場合に、テキストレンダリングの一貫性を維持するためです。.NET 2.0がリリースされた7年前に存在した問題ですが、実際にはその問題はありません。

Falseを渡して、問題を修正します。これが、WindowsFormsApplicationBaseクラスが行うことです。

于 2013-02-24T21:36:38.020 に答える