1: Imports System.Web.Mail 2: 3: Public Enum ReportType 4: ToMessageBox = 0 5: ToEventLog = 1 6: ToEMail = 2 7: End Enum 8: 9: Public Class Reporter 10: Private Shared Sub ReportToMessageBox(ByVal msg As String) 11: MessageBox.Show(msg) 12: End Sub 13: 14: Private Shared Sub ReportToEventLog(ByVal msg As String) 15: If Not EventLog.SourceExists("SampleSource") Then 16: EventLog.CreateEventSource("SampleSource", "SampleNewLog") 17: End If 18: Dim myLog As New EventLog() 19: myLog.Source = "SampleSource" 20: myLog.WriteEntry(msg) 21: End Sub 22: 23: Private Shared Sub ReportToEMail(ByVal msg As String) 24: Dim from As String = "autumn@piedey.co.jp" 25: Dim mailto As String = "autumn@piedey.co.jp" 26: Dim subject As String = "Sample Error Report" 27: Dim body As String = msg 28: SmtpMail.Send(from, mailto, subject, body) 29: End Sub 30: 31: Private Shared reportMode As ReportType 32: 33: Public Shared Sub SetReportMode(ByVal mode As ReportType) 34: reportMode = mode 35: End Sub 36: 37: Public Shared Sub Report(ByVal msg As String) 38: Select Case reportMode 39: Case ReportType.ToMessageBox 40: ReportToMessageBox(msg) 41: Case ReportType.ToEventLog 42: ReportToEventLog(msg) 43: Case ReportType.ToEMail 44: ReportToEMail(msg) 45: End Select 46: End Sub 47: 48: End Class 49: 50: Public Class Form1 51: Inherits System.Windows.Forms.Form 52: 53: …Windows フォーム デザイナで生成されたコード… 54: 55: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 56: Reporter.SetReportMode(ReportType.ToMessageBox) 57: End Sub 58: 59: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 60: Reporter.Report("エラーが発生しました") 61: End Sub 62: 63: Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged 64: Reporter.SetReportMode(ReportType.ToMessageBox) 65: End Sub 66: 67: Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged 68: Reporter.SetReportMode(ReportType.ToEventLog) 69: End Sub 70: 71: Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged 72: Reporter.SetReportMode(ReportType.ToEMail) 73: End Sub 74: End Class