Ist es möglich den Namen oder das Ereignis eines Buttons abzufragen?

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Ist es möglich den Namen oder das Ereignis eines Buttons abzufragen?

    Hallo ,
    ich habe folgendes Problem :

    Ich rufe aus einer Form1 per Button eine andere Form2 auf.

    Form2 möchte nun wissen woher der Aufruf kam??

    Ist es nun möglich dieses Eriegnis oder auch nur den Namen des Buttons abzufragen??

    ?(
    Danke

    Das könntest du einfach mit 2 Klassen, CCommandHandler
    und CTraceButton, und einem Modul realisieren.
    Du musst z.B. im Form_Load() Ereignis TraceButtons()
    aufrufen. Verfolgt werden außerdem nur Buttons
    von Formularen die derzeit im Speicher geladen sind.
    pButtonHandler.LastClickedButton gibt dann einen
    Verweis auf den zuletzt gedrückten CommandButton
    zurück.

    <pre>
    '===============================
    'Klasse CCommandButtonHandler
    '===============================
    Option Explicit

    Private m_pLastClickedButton As CommandButton
    Event ButtonClicked(pButton As CommandButton)

    Property Let LastClickedButton(ByRef pButton As CommandButton)
    Set m_pLastClickedButton = pButton
    RaiseEvent ButtonClicked(pButton)
    End Property

    Property Get LastClickedButton() As CommandButton
    Set LastClickedButton = m_pLastClickedButton
    End Property

    '===============================
    'Klasse CTraceButton
    '===============================
    Option Explicit

    Private WithEvents m_pCommandButton As CommandButton
    Private m_pHandler As CCommandButtonHandler

    Sub TraceButton(ByRef pCommandButton As CommandButton, ByRef pHandler As CCommandButtonHandler)
    Set m_pCommandButton = pCommandButton
    Set m_pHandler = pHandler
    End Sub

    Private Sub m_pCommandButton_Click()
    m_pHandler.LastClickedButton = m_pCommandButton
    End Sub

    '===============================
    'Modul
    '===============================
    Option Explicit

    Public pButtonHandler As CCommandButtonHandler
    Dim pButtons() As CTraceButton

    Sub TraceButtons()
    Dim Button As CommandButton
    Dim i As Long
    Dim lngCount As Long

    Set pButtonHandler = New CCommandButtonHandler
    Erase pButtons

    For i = 0 To Forms.Count - 1
    For Each Button In Forms(i).Controls
    ReDim Preserve pButtons(lngCount)
    Set pButtons(lngCount) = New CTraceButton
    pButtons(lngCount).TraceButton Button, pButtonHandler
    lngCount = lngCount + 1
    Next Button
    Next i
    End Sub
    </pre>
    knochenbruch schrieb am 08.07.2004 09:48
    Wenn mir nun noch jemand beschreiben kann , als Vergleich , wie ich das unter VB.net hinbekomme...


    Wofür das? Möchtest du das unter VB.NET machen?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    In VB.NET gibt es soweit ich weiß eine Variable namens "Sender" in jeder Ereignisprozedur. Diese enthält das Objekt, welches dieses Ereignis ausgelöst hat. Also kannst du womöglich mit Sender.Name herausfinden, wer den Aufruf gemacht hat.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    knochenbruch schrieb am 08.07.2004 12:12
    wäre schon toll so zeile. leider..


    Sorry, aber den Satz verstehe ich leider überhaupt nicht... Was meinst du?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    es waere toll wenn ich mit der codezeile sender.name
    mein problem lösen könnte.

    mit der zeile sender.gettype.name() bekomme ich leider nur den namen meiner aktullen form.
    ich möchte aber z.b den namen des buttens der die aktuelle form geladen hat.