During installtion of a windows application, if we have to show a custom message box, then the custom message box always comes behind the installtaion wizard form. To handle this issue one can create a form with topmost property set to true and open the message box having this form as owner.
Following is the code sample that will create a messagbox class.
[VB.NET CODE TO CREATE CLASS]
Public Class clsTopMostMessageBox
Public Shared Function Show(ByVal title As String, ByVal message As String, ByVal buttons As MessageBoxButtons, ByVal icons As MessageBoxIcon) As DialogResult
' Create a host form that is a TopMost window which will be the
' parent of the MessageBox.
Dim topmostForm As Form = New Form()
' new form should not be visible so position it off the visible screen and make it as small as possible
topmostForm.Size = New System.Drawing.Size(1, 1)
topmostForm.StartPosition = FormStartPosition.Manual
Dim rect As System.Drawing.Rectangle = SystemInformation.VirtualScreen
topmostForm.Location = New System.Drawing.Point(rect.Bottom + 10, rect.Right + 10)
topmostForm.Show()
' Make this form the active form and make it TopMost
topmostForm.Focus()
topmostForm.BringToFront()
topmostForm.TopMost = True
' Finally show the MessageBox with the form just created as its owner
Dim result As DialogResult = MessageBox.Show(topmostForm, message, title, buttons, icons)
'clean it up all the way
topmostForm.Dispose()
Return result
End Function
End Class
[VB.NET CLASS ENDS]
[VB.NET CODE TO CALL THE MESAGE BOX]
clsTopMostMessageBox.Show("Title","Message",MessageBoxButtons.OK, MessageBoxIcon.Warning)
Now the messagebox will appear above the installation wizard.