2013-02-24 16 views
1

我當前的WinForms項目需要從Sub Main()啓動;爲了做到這一點,必須取消選中「我的項目」的「應用程序」選項卡中的「啓用應用程序框架」選項。VB.NET控制佈局當EnableVisualStyles不同時EnabledisualStyles

小組主要是我這個樣子的......

<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)如果我重新檢查「啓用應用程序框架」並設置啓動表單,佈局問題就會消失。

Issue Example Screen Shot

+1

刪除'Application.DoEvents()' – SLaks 2013-02-24 21:26:25

+0

請添加屏幕截圖。 – SLaks 2013-02-24 21:26:44

+0

試圖刪除Application.DoEvents();屏幕截圖顯示刪除後的效果。 – zax0978 2013-02-24 21:35:53

回答

2
Application.SetCompatibleTextRenderingDefault(True) 

這就是麻煩製造者。兼容的文本呈現支持.NET 1.x中使用的文本呈現,特別是使用Graphics.MeasureString()方法計算自動化控件(如Label)的大小。 SetCompatibleTextRenderingDefault存在的唯一原因是保持文本呈現一致,如果您有舊的.NET 1.x組件仍然使用圖形繪製而不是.NET 2.0 TextRenderer類。 7年前.NET 2.0發佈時存在的一個問題,當然你實際上並沒有這個問題。

通過False來解決您的問題。這就是WindowsFormsApplicationBase類所做的。

+0

我很高興地說這個工作,而且,我沒有這個問題!......應該提到的是,使用Sub Main時的默認行爲是將它保留爲true(顯然,因爲它不除非它被設置爲假代碼)。 – zax0978 2013-02-24 21:40:24

相關問題