none
Eigenes Form Element (Button) erstellen RRS feed

  • 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 


    Mittwoch, 23. März 2011 20:49

Antworten

  • Hallo, 

    was auch immer ich gestern Falsch gemacht habe jetzt Funktioniert es.

    Vielen Dank Thorsten.

    • Als Antwort markiert EL_loro Freitag, 25. März 2011 10:10
    Freitag, 25. März 2011 10:09

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
    
    Im Form Designer steht die Komponente nach dem Erstellen des Projekts zur Verfügung.

    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
    Mittwoch, 23. März 2011 21:01
  • 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.

    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
    
    Jetzt ist halt nur noch die Frage wie ich das richtig Verwende.

    Donnerstag, 24. März 2011 14:27
  • 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
    Donnerstag, 24. März 2011 20:14
  • Hallo, 

    was auch immer ich gestern Falsch gemacht habe jetzt Funktioniert es.

    Vielen Dank Thorsten.

    • Als Antwort markiert EL_loro Freitag, 25. März 2011 10:10
    Freitag, 25. März 2011 10:09