Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0006: Alle Menü-Clicks in einer Methode zusammenfassen

 von 

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:

Schwierigkeitsgrad 1

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:

Download des Beispielprojektes [11,73 KB]

' 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