Start / Tipps / VB.NET-Tipp 0006: Alle Menü-Clicks in einer Methode zusammenfassen
 
Startseite Up-/Download Tutorials Club Das Team
Rubriken Foren Bücher Tips 'n Tricks Suche


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


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 1 .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008
Download des Beispielprojektes 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 oder Erfahrungen mit diesem Tipp haben, dann sollten Sie diese hier posten. Für alles weitere melden Sie sich bitte in einem zum Thema passendem Forum.

Falls Sie in ihren Kommentar Quellcode einbinden wollen, verwenden Sie bitte Pseudotags: Quellcode Bei VB.NET wird durch ein vorangestelltes [dotnet] markiert und durch [/dotnet] abgeschlossen.

Ihr Name:   
Ihre E-Mailadresse:   
 
Bitte folgende Kontrollnummer eingeben: 1539
Kontrolle:   
 
Ihre Frage/Ihr Kommentar:
Ja, ich möchte weitere Beiträge per E-Mail erhalten
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

Erstellt: 19.02.2009
Aktualisierung: 26.07.2010
  Autor: Spatzenkanonier
E-Mail: Tipps@ActiveVB.de



Copyright © 1998-2010 by ActiveVB
Alle Rechte vorbehalten.