den richtigen Button finden

  • VB.NET

Es gibt 63 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    ... also die Verstöpselung übernimmt der Planer... und OwnerDrawing ist ein interessanter neuer Ansatz nur, mit dem was ich bisher darüber gefunden habe... fühle ich mich damit etwas überfordert ;(

    Ich habe mal (nach vielem vergeblichen Suchen und Versuchen) noch eine ganz andere Frage...

    VB.NET-Quellcode

    1. 'Signalbutton wird angeklickt
    2. Private Sub Signal_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
    3. BName = DirectCast(sender, Button).Name.ToString 'Name des Buttons ermitteln
    4. BParent = DirectCast(sender, Button).Parent.Name.ToString 'Container des Buttons ermitteln
    5. Label1.Text = BParent
    6. If e.Button.ToString = "Left" Then 'Linksklick?...
    7. If oEBP.GetSignalState(BName) = 0 Then '...Signal geschlossen?...
    8. oEBP.SetSignalState(BName, 1) '... ja -> Signal auf geöffnet schalten
    9. Signale.Controls(BName).BackColor = Color.Lime '... ja -> Buttonfarbe = Grün
    10. Else
    11. oEBP.SetSignalState(BName, 0) '... nein -> Signal auf geschlossen schalten
    12. Signale.Controls(BName).BackColor = Color.Red '... nein -> Buttonfarbe = Rot
    13. End If
    14. End If
    15. End Sub

    In der Sub kann ich über BName z.B. in dieser Zeile erreichen, daß es für alle "Signal"-Buttons anwendbar ist. ---.Controls(BName).---

    VB.NET-Quellcode

    1. Signale.Controls(BName).BackColor = Color.Lime

    In dieser Zeile ermittle ich nun noch den Namen des Containers in dem sich der Button befindet z.B. auf "Signale"

    VB.NET-Quellcode

    1. BParent = DirectCast(sender, Button).Parent.Name.ToString 'Container des Buttons ermitteln

    Wie kann ich nun in der Zeile

    VB.NET-Quellcode

    1. Signale.Controls(BName).BackColor = Color.Lime

    diese Variable so verwenden (ähnlich wie die Variable BName), daß der Button sich auch in einem anderen Container z.B. "Weichen" befinden kann?
    also xxxxxx(BParent).Controls(BName).BackColor = Color.Lime.
    naja, du mußt dafür den anneren Container halt durchsuchen.

    Aber dir fehlen auch jede Menge Grundlagen, du weißt scheinbar garnet, welche Datentypen du wo einsetzst, womöglich ist dir nichtmal wirklich klar, wozu Datentypen ühaupt da sind in einer streng typisierten Sprache.
    Stattdessen hängst du überall .Tostring dran, und arbeitest dann ausschließlich mit Datentyp String.

    dieses Buch lesen (hingegen das Galileio-Openbook ist Mist)

    Natürlich bist du dann auch mit OwnerDrawing überfordert, (aber im Grunde bist du auch mit deinem Projekt überfordert.)
    Hallo ErfinderDesRades,
    ... nun, ich sehe es ein, daß Du dieses Forum vor Überladung schützen möchtest... aber gleich eine so vor den Latz zu geben? ... hat mich schon etwas geärgert...
    Aber ich lerne lieber über ein Projekt, das mir Spaß macht, als "Hallo World" zu erzeugen... und eine gewisse Überforderung mit dem Projekt, ist für mich Ansporn des Lernens...

    ... hab mal noch eine andere Lösung gefunden als... (Abwimmelantwort)
    naja, du mußt dafür den anneren Container halt durchsuchen.
    Variablen Deklaration...

    VB.NET-Quellcode

    1. Dim BParent As Control

    ... Zuweisung in der Sub...

    VB.NET-Quellcode

    1. BParent = DirectCast(sender, Button).Parent 'Container des Buttons ermitteln

    ... dann kann ich meine Button-Farbe ändern... egal in welchem Container er sich befindet... und habe meine 2 Freiheitsgrade, die ich brauche: Name und Container

    VB.NET-Quellcode

    1. BParent.Controls(BName).BackColor = Color.Black

    ERSC schrieb:

    gleich eine so vor den Latz zu geben
    sorry - ich meine sowas nie als Aggression, sondern immer schlicht als Feststellung belegbarer Tatsachen.
    Freut sich der Rezipient üblicherweise nicht drüber, mag ihm aber dennoch hilfreicher sein als keine Antwort, oder eine, die eine Problematik einfach weiter fortführt, welche aber von fehlenden Grundlagen herrührt.

    Bestimmt willich niemanden aussm Forum verekeln.
    Und ich pupse auch nicht nur "dir fehlen Grundlagen!" in die Welt, sondern ich gebe dir v.a. einen Buch-Empfehlungs-Link für ein hervorragendes Buch, mit dem du dein Knowhow umfassend verbessern kannst.

    Und ich bin dir auch sehr dankbar, dass du dir so viel Mühe gegeben hast, meine Interesse-Fragen so ausführlich zu beantworten :thumbsup: - war ja garnet selbstverständlich

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „ErfinderDesRades“ ()