VB.NET-Tipp 0006: Alle Menü-Clicks in einer Methode zusammenfassen
von Spatzenkanonier
Beschreibung
Bei einem reichhaltigen Menü kann man unter Umständen erheblich an Übersichtlichkeit gewinnen, wenn man die vielen XYToolStripMenuItem_Click()- Methoden zu einer einzigen Methode zusammenführt. Dieser Tipp zeigt dies an einem kleinen Beispiel.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2005 ' Option Strict: An ' ' Referenzen: ' - Accessibility ' - System ' - System.Data ' - System.Deployment ' - System.Drawing ' - System.Windows.Forms ' - System.Xml ' ' Imports: ' - Microsoft.VisualBasic ' - System ' - System.Collections.Generic ' - System.Windows.Forms ' ' ############################################################################## ' ################################# Form1.vb ################################### ' ############################################################################## Public Class Form1 Private Sub MenuStrip1_MenuClicked(ByVal Sender As Object, _ ByVal e As EventArgs) Handles _ RaufToolStripMenuItem.Click, RunterToolStripMenuItem.Click, _ LinksToolStripMenuItem.Click, RechtsToolStripMenuItem.Click, _ HintergrundToolStripMenuItem.Click, _ VordergrundToolStripMenuItem.Click, EingebenToolStripMenuItem.Click, _ AusgebenToolStripMenuItem.Click Select Case True Case Sender Is RaufToolStripMenuItem Me.Top -= 50 Case Sender Is RunterToolStripMenuItem Me.Top += 50 Case Sender Is LinksToolStripMenuItem Me.Left -= 50 Case Sender Is RechtsToolStripMenuItem Me.Left += 50 Case Sender Is HintergrundToolStripMenuItem If Not ColorDialog1.ShowDialog = _ Windows.Forms.DialogResult.OK Then Return Me.BackColor = ColorDialog1.Color Case Sender Is VordergrundToolStripMenuItem If Not ColorDialog1.ShowDialog = _ Windows.Forms.DialogResult.OK Then Return Me.ForeColor = ColorDialog1.Color Case Sender Is EingebenToolStripMenuItem Dim s As String = "Was eingeben" Label1.Text = InputBox(s, s, s) Case Sender Is AusgebenToolStripMenuItem MsgBox(Label1.Text) End Select End Sub End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Eckard Ahlers am 31.07.2007 um 01:05
Hallo!
Ich verstehe den Sinn des Interfaces nicht. Gut, das ermöglicht, beide Klassen in ein Array zu stopfen, aber das hat mit den Events doch nix zu tun.
Wenn beide Klassen dasselbe Event nutzen, kann man das auch ohne Interface auf denselben Handler leiten:
Option Explicit On
Option Strict On
Option Compare Binary
Public Class SampleEventArgs : Inherits System.EventArgs
Private m_strData As String
Public Sub New(ByVal strData As String)
m_strData = strData
End Sub
Public Property Data() As String
Get
Return m_strData
End Get
Set(ByVal Value As String)
m_strData = Value
End Set
End Property
End Class 'SampleEventArgs
'-------------------------------------------------------------
Public Class MyClassOne
Public Event SampleEvent(ByVal sender As Object, ByVal e As SampleEventArgs)
Public Sub RaiseMyEvent()
RaiseEvent SampleEvent(Me, _
New SampleEventArgs("Ich wurde aus MyClassOne ausgelöst!"))
End Sub
End Class 'MyClassOne
'-------------------------------------------------------------
Public Class MyClassTwo
Public Event SampleEvent(ByVal sender As Object, ByVal e As SampleEventArgs)
Public Sub RaiseMyEvent()
RaiseEvent SampleEvent(Me, _
New SampleEventArgs("Ich wurde aus MyClassTwo ausgelöst!"))
End Sub
End Class 'MyClassTwo
'-------------------------------------------------------------
Public Class Main
Public Shared Sub Main()
Dim mco As New MyClassOne
Dim mct As New MyClassTwo
AddHandler mco.SampleEvent, AddressOf SampleEventHandler
AddHandler mct.SampleEvent, AddressOf SampleEventHandler
mco.RaiseMyEvent()
mct.RaiseMyEvent()
RemoveHandler mco.SampleEvent, AddressOf SampleEventHandler
RemoveHandler mct.SampleEvent, AddressOf SampleEventHandler
System.Console.ReadLine()
End Sub
'
' Der zentrale Ereignishandler.
'
Private Shared Sub SampleEventHandler( _
ByVal sender As Object, _
ByVal e As SampleEventArgs)
System.Console.WriteLine("{0}: {1}", sender.GetType(), e.Data)
End Sub
End Class 'Main