vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Button aus event ermitteln. 
Autor: Preisser
Datum: 04.01.12 11:48

Hallo,

warum nicht? Der Compiler wird ja vermutlich nicht bei jedem Aufruf neuen Code für die gleiche Methode erzeugen (das wäre schon ein wenig verschwenderisch). Normalerweise müsste er einfach Objekte erzeugen, die die verwendeten Variablen beinhalten, und diese Objekte mit den Methodenreferenzen verwenden (natürlich wird für jeden Button eine neues Delegatobjekt instanziiert - aber das ist ja normalerweise nicht aufwändiger, als z.B. einen Button zu instanziieren).

Wenn man das nicht will, kann man entweder eine Methode angeben, die man dann wiederverwendet, und dann aber beispielsweise den Button aus der sender-Variable ermitteln; oder man könnte eine Klasse definieren, die bestimmte Instanzvariablen hat, und in der Schleife jeweils neue Instanzen der Klasse erzeugen und einen Handler auf eine Methode der Klasse erzeugen (hat den gleichen Effekt wie der andere Code, nur ist hier die Funktionalität des Verwendens äußerer Variablen in Lambda-Ausdrücken manuell nachgebildet). Dann wird auch nur eine Methode wiederverwendet, aber natürlich für jeden Button ein neuer Delegat erzeugt (was ja kein Problem ist).
Public Class Form2
 
    Private Class MyButtonHandler
        Private ReadOnly myChar As Char
        Private myForm As Form2
        Public Sub New(myChar As Char, myForm As Form2)
            Me.myChar = myChar
            Me.myForm = myForm
        End Sub
 
        Public Sub HandleClick(sender As Object, e As EventArgs)
            myForm.HandleChar(myChar)
        End Sub
    End Class
 
    Public Sub New()
        InitializeComponent()
 
        'Anzuzeigende Tastatur-Zeilen
        Dim zeilen As String() = {"qwertzuiopü+", "asdfghjklöä#", "yxcvbnm,.-"}
        For y As Integer = 0 To zeilen.Length - 1
            For x As Integer = 0 To zeilen(y).Length - 1
 
                Dim zeichen As Char = zeilen(y)(x) 'akt. Taste
 
                ' Button erzeugen, positionieren und anzeigen
                Dim btn As New Button() With { .Text = zeichen.ToString() }
                btn.Bounds = New Rectangle(If(y Mod 2 = 1, 10, 0) + 20 + x * _
                  30, 20 + y * 30, 25, 25)
                Controls.Add(btn)
 
                Dim handler As New MyButtonHandler(zeichen, Me)
                AddHandler btn.Click, AddressOf handler.HandleClick
 
            Next
        Next
 
    End Sub
 
    Private Sub HandleChar(myChar As Char)
        MessageBox.Show("Taste " & myChar & " gedrückt!")
    End Sub
End Class


Beitrag wurde zuletzt am 04.01.12 um 11:56:44 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Button aus event ermitteln.2.420VBHater04.01.12 10:34
Re: Button aus event ermitteln.1.608Manfred X04.01.12 10:48
Re: Button aus event ermitteln.2.091Preisser04.01.12 10:52
Re: Button aus event ermitteln.1.641Manfred X04.01.12 11:29
Re: Button aus event ermitteln.1.601Preisser04.01.12 11:48
Re: Button aus event ermitteln.1.573Manfred X04.01.12 11:58

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel