Klassenmember eigener Controls zur Entwicklungszeit ansprechen bzw. anzeigen (Intellisense)

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightsource.

    Klassenmember eigener Controls zur Entwicklungszeit ansprechen bzw. anzeigen (Intellisense)

    Ich habe mehrere von PictureBoxes geerbte Controls.
    Diese sollen verbunden werden als Parent/Child.
    Zur Entwicklungzeit weiß ich aber natürlich nicht welches Control
    gerade angeklickt wurde. Ich möchte das erst angeklickte als Parent
    und das nächst angeklickte als Child in den Eigenschaften der beiden Controls speichern.
    Die Eigenschaften Parent und Child sind bei allen diesen Controls vorhanden.

    Wie kann ich nun angeben, dass das eine das Parent ist, und das andere das Child?
    Ich weiß nicht wie ich an die Member während des Programmerstellens komme.
    Worauf bezieht sich deine Gegenfrage?

    Falls du sie auf Parent und Child beziehst, so sind das nur Begriffe, die ich verwendet habe, um
    eine verkettete Liste zu erstellen.
    Sollte für die Beantwortung der Frage aber unwichtig sein.
    Deine Frage ist leider nicht hilfreich, sondern unnötig, da sie nicht konkret genug ist, als
    dass ich sie beantworten könnte.
    Falls es notwendig ist, dass alles, was man programmiert zu etwas gut sein soll, um hier Antworten
    zu bekommen, werde ich versuchen mich zu bessern. :rolleyes:
    Wo genau liegt denn das Problem? Geht das so nicht?

    VB.NET-Quellcode

    1. Private firstClicked As DeinControl
    2. Private Sub DeinControl_Clicked (sender as object, e....) Handles... (ggf dynamisch mit addhandler arbeiten)
    3. if firstClicked is nothing then
    4. firstclicked = DirectCast(sender, DeinControl)
    5. else
    6. firstClicked.child = DirectCast(sender, DeinControl)
    7. DirectCast(sender, DeinControl).parent = firstClicked
    8. firstClicked = Nothing
    9. End if
    10. End Sub
    (Aus dem Kopf)

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Das kann ich erst wieder Morgen an meinem Arbeitsplatz testen.

    Mein Programablauf sieht etwa so aus:

    User klickt einzelne Control-Icons an, woraufhin diese in ein Panel kopiert werden.
    Nun klickt er zwei dieser Controls in einer bestimmten Reihenfolge an.
    Diese werden nun durch Klick auf einen Button oder Icon verbunden,
    so dass später eine Berechnung auch in dieser Reihenfolge stattfinden muss.

    In der Button-Klick-Routine gehe ich durch alle auf dem Panel vorhandenen
    Controls. Das erste selektierte wird als Parent deklariert, das nächste als
    Child. Das geschieht innerhalb der For Each Schleife. Darum habe ich z.B. auch
    keinen "sender". Die Controls haben einige Eigenschaften gemeinsam, andere
    aber nicht.
    Du solltest dir schon ein anständiges Datenmodell überlegen. Ich würde dein Panel mit GDI+ zeichnen und in diesem dann eine Methode haben, mit welcher man einzelne Aktionen hinzufügen kann. So wies jetzt ist, geht es jedenfalls nicht wirklich gut.

    Lightsource schrieb:

    Falls du sie auf Parent und Child beziehst, so sind das nur Begriffe, die ich verwendet habe, um
    eine verkettete Liste zu erstellen.

    Dann tu das doch. Mach dir ne verkettete Liste und trenne GUI von Daten. Ausserdem ist GDI+ wirklich ratsam, ein Panel wäre wohl overpowered.
    Sorry, aber eigentlich würde das alles nichts an der Funktion des Programms ändern.
    Ich müsste immer noch irgendwelche Objekte mit einander verbinden.
    Und ich wüsste zur Entwicklungszeit immer noch nicht welches Objekt ich
    mit welchem anderen verknüpfen muss. Das hat jetzt gar nichts mit
    Controls oder GDI zu tun. Ich will auch nicht unbedingt Reflection verwenden
    womit man mein Problem durchaus bewältigen könnte.
    Das was ich hier will sind eine Art von dynamischen Objekten.
    Wahrscheinlich habt ihr noch nicht richtig verstanden was ich überhaupt machen will.

    Ich kann doch ein neues Objekt aus einer Klasse erstellen.
    Diesem neuen Objekt weise ich eines der angewählten Objekte zu.
    Nun will ich bei meinem neuen Objekt auf dessen Member zugreifen.
    Das geht eigentlich so nicht, weil zur Entwicklungszeit noch nicht klar ist
    welches Objekt ich eigentlich kopiert habe.
    Nun ist es aber so, dass alle Objekte die überhaupt angewählt werden könnten
    einige identische Eigenschaften haben. Wie z.B. Parent bzw. Child.
    Nur diese beiden Eigenschaften will ich setzen. Es könnte also
    nichts schief gehen, da es nur diese beiden Möglichkeiten gibt.

    Aber ich kann nicht schreiben ObjektA.Parent=ObjektB und ObjektB.Child=ObjektA

    Gibt es da irgend eine Möglichkeit?

    Lightsource schrieb:

    Wahrscheinlich habt ihr noch nicht richtig verstanden was ich überhaupt machen will.
    Vermutlich nicht, nein, aber du drückst dich auch nicht besonders verständlich aus.
    Du würfelst hier die Begriffe Objekt und Klasse durcheinander, und du redest die ganze Zeit von Designtime, beschreibst aber Laufzeit-Aktionen. Nenne die genauen Klassen, sage uns, wann und wo Objekte davon erstellt werden, und was du wann damit machen willst.

    Lightsource schrieb:

    Nun will ich bei meinem neuen Objekt auf dessen Member zugreifen.
    Das geht eigentlich so nicht, weil zur Entwicklungszeit noch nicht klar ist
    welches Objekt ich eigentlich kopiert habe.
    Ich denk (s.Post#1) alle deine Objekte sind vom Typ SpezialPicturebox, erben von Picturebox und da hast du die Properties Parent As SpezialPicturebox und Child As SpezialPicturebox drangeprogt?
    Na, dann kannst du darauf auch zugreifen.

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