Previous | Index | Next 

[PRB] Setting the Font property at runtime causes an unexpected Paint event which may freeze the application

If you assign a new object to the Font property of a form, you indirectly trigger a Paint event under .NET. This is the standard .NET behavior and isn’t an issue related to VB Migration Partner’s support library. The extra Paint event doesn’t fire under VB6.

Because of this minor difference between VB6 and .NET, if you migrate a piece of VB6 code that assignes the Font property from inside the handler of the Paint event then the event is triggered again in a recursive manner, and the application appears to freeze or a StackOverflow error occurs.

To work around this issue, starting with version 1.33 the VB6Form, VB6PictureBox, and VB6UserControl classes expose a new property named PrintFont. This property affects the font used for Print methods as well as the result returned by TextWidth and TextHeight methods. If you don’t set it explicitly, it is equal to the standard Font property. Here’s an example of how to use it:

        Private  Sub Form_Paint()
            ' Change the font name, but use the same  font size
            '## ReplaceStatement Me.PrintFont = New  Font("Arial”, Me.Font.Size)
            Me.FontName = "Arial"
  Print "Test string"
  End Sub

 

Previous | Index | Next