form-controls in klassenbibliothek erzeugen

  • VB.NET
  • .NET 3.5

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    form-controls in klassenbibliothek erzeugen

    habs nicht gefunden, obwohl ich seit ner stunde suche.
    ich weiß, daß es so nicht laufen kann, aber ich weiß nicht, wie es korrekt aussehen würde :

    Imports System.Drawing
    Imports System.Windows.Forms

    Public Class teil
    Dim Stift As New Drawing.Pen(Color.Red, 1)
    Dim bauteil As New RadioButton

    Public Sub erzeuge()
    bauteil.Name = "teil1"
    bauteil.Size = New Size(19, 19)
    bauteil.Checked = True
    bauteil.CheckAlign = ContentAlignment.MiddleCenter
    bauteil.Location = New Point(301, 151)
    teil.controls.Add(bauteil) ********************hier ist der fehler, oder ????
    End Sub

    End Class

    es liegt zwischen den ohren, schon klar ..
    @klassenfeind Wahrscheinlich musst Du die System.Windows.Forms.dll als Verweis Deinem Projekt hinzufügen.
    Ansonsten:
    Was ist das Problem?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    die zeile :

    teil.controls.Add(bauteil)

    lautet in einem form (nicht in einer dll) :

    Me.controls.Add(bauteil)

    es gelingt mir nicht, das in der dll-erzeugung (klassenbibliotheks-projekt) syntaxrichtig zu formulieren.
    klar scheint mir : ich hab nicht verstanden was das "me" tut, und kann es deshalb nicht auf den kontext in der dll umsetzen ...

    die nötigen dll (System.Windows.Forms) hab ich eingebunden, sonst kämen da ja auch fehlermeldungen beim imports
    @klassenfeind Ich hab da ein Verständnisproblem.
    Was willst Du überhaupt erreichen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    ich möchte eine kleine anlagensimulation schreiben, in der ich ein paar mechanische bewegungen grob nachbilde.
    die bewegungsanimation und die kommunikation mit einem leitrechner mache ich am einfachsten in vb, deshalb und wegen der bequemen grafik ein form.
    als normales form hab ich das schon alles, es läuft ganz gut, und nun möchte ich grafik und animation für anwender in eine dll packen,
    damit die damit ihre leitprozeduren komfortabel und einfach testen können.
    @klassenfeind Ich meinte, wie Deine DLL mit anderen Programmen zusammenwirkt.
    Was genau funktioniert nicht?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    die kommunikation ist eine völlig andere geschichte, das geschieht über opcua, das ist alles kein ding.
    in der routine, die mit der zu erzeugenden dll arbeitet, werden dann "aufträge" an die threads gegeben, die meine anlagenmodule animieren,
    das bildet die prozessebene (dort sind das sps) nach.

    es hängt wirklich nur an der erzeugung eines radion-buttons über ne methode in einer klassenbibliothek (als projekt in vs erstellt)

    der radio-button als rundes element eignet sich prima, um unsere bauteile zu visualisieren.
    ich möchte ne klasse "teil" haben, der ich methoden wie "erzeuge" und "bewege" gebe, und damit bastle ich mir meine grafik.
    (das erzeugte element soll wie gesagt ein radio-button sein, dann muß ich selber nix zeichnen oder importieren)
    @klassenfeind Willst Du wie in einem Designer innerhalb der DLL eine GUI zusammenstellen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    ich komm so nicht weiter.
    ich mach das jetzt anders : ein kreis in word gezeichnet, rot eingefärbt, in paint zu einer bitmap konvertiert,
    und dann in die resourcen von vs importiert. schon hab ich ein kreislein, das ich per location-koordinaten wandern lassen kann.

    trotzdem : vielen dank für eure tipps !!
    Obwohl die Weißwurst schon gegessen ist, hier noch etwas süßer Senf dazu: Die Verwendung eines RadioButtons als Grafikobjekt ist Zweckentfremdung. Zum Glück hast Du schon einen besseren Weg selbst gefunden. Aber zur Ursprungsfrage: Du schreibst in der DLL eine Funktion, die als Parameter entweder die Controls des Forms nimmt oder gar das Form selber. Und dann fügst Du dem, was Du dort als Parameter bekommen hast, Deinen RadioButton hinzu. Also z.B.:

    VB.NET-Quellcode

    1. Public Sub AddMyRadioButtonTo(Controls As Control.ControlCollection)
    2. Dim bauteil As New RadioButton
    3. bauteil.Name = "teil1"
    4. bauteil.Size = New Size(19, 19)
    5. bauteil.Checked = True
    6. bauteil.CheckAlign = ContentAlignment.MiddleCenter
    7. bauteil.Location = New Point(301, 151)
    8. Controls.Add(MySpecialRadioButton)
    9. End Sub

    oder eben

    VB.NET-Quellcode

    1. Public Sub AddMyRadioButtonTo(Formular As Form)
    2. Dim bauteil As New RadioButton
    3. bauteil.Name = "teil1"
    4. bauteil.Size = New Size(19, 19)
    5. bauteil.Checked = True
    6. bauteil.CheckAlign = ContentAlignment.MiddleCenter
    7. bauteil.Location = New Point(301, 151)
    8. Formular.Controls.Add(MySpecialRadioButton)
    9. End Sub

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.