1

我当前的 WinForms 项目需要从 Sub Main() 启动;为此,必须取消选中“我的项目”的“应用程序”选项卡中的“启用应用程序框架”选项。

我拥有的 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)视觉样式确实出现在按钮等控件上。2)如果我重新检查“启用应用程序框架”,布局问题就会消失,并设置一个启动表单。

问题示例屏幕截图

4

1 回答 1

2
Application.SetCompatibleTextRenderingDefault(True)

这就是麻烦制造者。兼容的文本呈现支持 .NET 1.x 中使用的文本呈现,特别是使用 Graphics.MeasureString() 方法来计算自动调整大小的控件(如 Label)的大小。SetCompatibleTextRenderingDefault 存在的唯一原因是如果您有旧的 .NET 1.x 组件仍然使用 Graphics 而不是 .NET 2.0 TextRenderer 类进行绘制,则保持文本呈现的一致性。7 年前 .NET 2.0 发布时就存在的问题,你肯定没有这个问题。

通过 False 来解决您的问题。这就是 WindowsFormsApplicationBase 类的作用。

于 2013-02-24T21:36:38.020 回答