Imports DigitalData.Modules.Logging Imports System.Windows.Forms Public Class FormHelper Private ReadOnly LogConfig As LogConfig Private ReadOnly Logger As Logger Private ReadOnly Form As Form Public Class MessageOptions Public Property ShowCancel As Boolean = False End Class Public Sub New(pLogConfig As LogConfig, pForm As Form) LogConfig = pLogConfig Logger = pLogConfig.GetLogger() Form = pForm End Sub Public Function ShowInfoMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult Logger.Info(pMessage) Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Info, pOptions) End Function Public Function ShowErrorMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult Logger.Error(pMessage) Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Error, pOptions) End Function Public Function ShowErrorMessage(pException As Exception, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult Logger.Error(pException) Dim oMethodName = GetMethodName() Dim oBaseMessage = "In der Funktion '{0}' ist folgender Fehler aufgetreten: {1}" Dim oMessage = String.Format(oBaseMessage, oMethodName, vbNewLine & vbNewLine & pException.Message) If LogConfig.Debug Then oMessage &= vbNewLine & vbNewLine & "=== Debug Information ===" oMessage &= vbNewLine & vbNewLine & "Stacktrace:" oMessage &= vbNewLine & pException.StackTrace End If Return ShowMessage(oMessage, pTitle, frmDialog.DialogType.Error, pOptions) End Function Public Function ShowWarningMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult Logger.Warn(pTitle & " - " & pMessage) Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Warning, pOptions) End Function Public Function ShowQuestionMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult Logger.Info(pTitle & " - " & pMessage) Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Question, pOptions) End Function Public Function ShowSuccessMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult Logger.Info(pTitle & " - " & pMessage) Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Success, pOptions) End Function Private Function ShowMessage(pMessage As String, pTitle As String, pType As frmDialog.DialogType, pOptions As MessageOptions) As DialogResult Dim oOptions As MessageOptions = IIf(pOptions Is Nothing, New MessageOptions, pOptions) Dim oForm As New frmDialog(pMessage, pTitle, pType, oOptions.ShowCancel) oForm.BringToFront() oForm.TopMost = True Return oForm.ShowDialog() End Function Private Function GetMethodName() As String Dim oStackTrace As New StackTrace() Dim oMethodName As String = oStackTrace.GetFrame(2).GetMethod.Name Return oMethodName End Function End Class