Benutzer mit den meisten Antworten
Eigenes Form Element (Button) erstellen

Frage
-
Hallo zusammen,
Ich habe mehrere Variablen und zu jeder Variable gibt es je einen Button zum lesen oder schreiben der selbigen. Das Funktioniert auch alles Super, Jetzt kann es aber sein, das noch mehr Variablen erfasst werden sollen. Nun bin ich auf der suche nach einer schönen Lösung und habe mir in den Kopf gesetzt ich könnte ja eine eigene Button-Klasse schreiben die alles Eigenschaften von der Standert Button klasse erbt und um zwei zusätliche Funktionen erweitert wird die da heissen setGlobalID und getGlobalID. Nur habe ich leider keine Idee wie ich das in Visual Studio Express 2008 Umsetzen könnte.Sub Form1Load(...) For Each element In Panel1.Controls If TypeOf element Is Button_read Then Dim tmpButt = DirectCast(element, Button_read) AddHandler mybutt.Click, AddressOf Button_read_Click End If Next End Sub Better_Button_read(ByVal sender As System.Object, ByVal e As System.EventArgs) For Each element In Panel_BW1.Controls If TypeOf element Is Button_read Then 'Ist das aktuelle Element = den Button der geklickt wurde If CType(sender, Control).Name.Equals(DirectCast(element, Button_read).Name) Then 'Hier jetzt auf die getGlobalID Funktion zugreifen 'Sub read aufrufen mit GlobalID readControler(globalid) End If End If Next
Habt ihr eine Idee, Tutorial oder Codeschnipsel der mir bei der Lösung Hilft um meine Eigene Button Class zu schreiben.
Gruß Chris
Antworten
Alle Antworten
-
Hallo,
eine eigene Button Klasse kannst Du relativ einfach über das Schlüsselwort Inherits von der Button Basisklasse ableiten:
Public Class ExtendedButton Inherits Button Public Function GetGlobalId() As Integer ' ... End Function Public Sub SetGlobalId(Byval id As Integer) '... End Sub End Class
Statt Methoden kann man hier auch mit Eigenschaften (Property) arbeiten und auf "get.. /set..." verzichten.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de -
Hi Thorsten,
irgendwie stehe ich gerade auf dem Schlauch bzw. bin ich mir nicht sicher was ich machen muss.
Erstelle ich ein Neues Projekt? Wenn ja, welche Vorlage muss ich den auswählen und wie binde ich das dann in mein Projekt ein.Oder erstelle ich eine Klasse in meinem Projekt.
Auch wenn ich beides schon probiert habe komme ich nicht weiter. Da fehlt es wohl noch bei mir...
Vilen dank schon mal für deinen Tip mit der Eigenschaft Property Ich habe den Code wie folgt dafür geschrieben.
Jetzt ist halt nur noch die Frage wie ich das richtig Verwende.Imports System Imports System.Windows.Forms Imports System.Drawing Public Class Button_read Inherits Button Private myGlobalID As Integer Public Property GlobalID() As Integer Get Return myGlobalID End Get Set(ByVal value As Integer) myGlobalID = value End Set End Property End Class
-
Hallo,
ein neues Projekt musst Du da nicht erstellen, auch keine bestimmte Vorlage. Eine neue Codedatei zum Projekt hinzufügen und eine normale Klasse beschreiben, wie Du es bereits in Deinem Beispiel gemacht hast, reicht völlig. Es müsste nicht einmal eine neue Codedatei sein, ist aber natürlich übersichtlicher.
Für mich ist leider nicht ersichtlich, wo Du "auf dem Schlauch stehst". Das von dir gegebene Beispiel schaut oberflächlich korrekt aus.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de