Eigenes Control - Eigene Eigenschaften in eine eigene Gruppe packen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Volker Bunge.

    Eigenes Control - Eigene Eigenschaften in eine eigene Gruppe packen

    Hallo zusammen,

    ich habe mir eine neue Checkbox gebastelt und das Ganze als Steuerelement-Projekt aufgebaut.

    Das mit neuen Eigenschaften und dessen Umsetzung im Steuerelement habe ich alles soweit hinbekommen und es funktioniert auch soweit.

    Jetzt möchte ich aber, das meine eigenen Eigenschaften in eine eigene Gruppe stehen. Aktuell stehen Sie alle in der Gruppe "Sonstige".

    Oder kann man auch auf bestehende Gruppen zurückgreifen und die neuen Eigenschaften dort hin packen.

    Den Namen der neuen Gruppe bzw. Gruppen sollte man natürlich selbst festlegen können.

    Wäre echt nett, wenn Ihr mir einen Tipp geben könntet.

    Gruß

    Volker
    Hallo zusammen,

    vielen Dank für die schnelle und für mich richtige Antwort. Klappt supper.

    Habe haben noch eine kleine Frage: Zwei Eigenschaften sollen Dateipfade aufnehmen. Per String und das reinkopieren des Dateipfades klappt auch schon alles. Wie muss ich den Code umschreiben, damit ich ein Filedialog öffnen kann?

    Hier mal mein Gerüst.

    Spoiler anzeigen

    Quellcode

    1. Private _EigeneDatei_Aus_Property As String
    2. Private _EigeneDatei_Ein_Property As String
    3. Public Event EigeneDatei_Aus_Changed As EventHandler
    4. Public Event EigeneDatei_Ein_Changed As EventHandler
    5. <Category("Alternative Eigenschaften")>
    6. Public Property EigeneDatei_Aus As String
    7. Get
    8. Return _EigeneDatei_Aus_Property
    9. End Get
    10. Set(value As String)
    11. _EigeneDatei_Aus_Property = value
    12. RaiseEvent EigeneDatei_Aus_Changed(Me, EventArgs.Empty)
    13. End Set
    14. End Property
    15. <Category("Alternative Eigenschaften")>
    16. Public Property EigeneDatei_Ein As String
    17. Get
    18. Return _EigeneDatei_Ein_Property
    19. End Get
    20. Set(value As String)
    21. _EigeneDatei_Ein_Property = value
    22. RaiseEvent EigeneDatei_Ein_Changed(Me, EventArgs.Empty)
    23. End Set
    24. End Property
    25. Private Sub HandleEigeneDatei_Aus_Changed(sender As Object, e As EventArgs) Handles Me.EigeneDatei_Aus_Changed
    26. ' ****************************************************************
    27. ' Hier kannst du auf Änderungen der Eigenschaft reagieren
    28. ' ****************************************************************
    29. Call Umschaltbilder_aktualisieren()
    30. End Sub
    31. Private Sub HandleEigeneDatei_Ein_Changed(sender As Object, e As EventArgs) Handles Me.EigeneDatei_Ein_Changed
    32. ' ****************************************************************
    33. ' Hier kannst du auf Änderungen der Eigenschaft reagieren
    34. ' ****************************************************************
    35. Call Umschaltbilder_aktualisieren()
    36. End Sub


    String gegen Filedialog zu tauschen habe ich schon ausprobiert. Klappt leider nicht. Da kommt eine Fehlermeldung, dass die Filedialog nicht in String umgewandelt werden kann.

    Vielen Dank schon einmal im Voraus.

    Volker

    P.S. Habe gerade selbst die Lösung für meine Frage gefunden.

    Einfach so

    <Category("Alternative Eigenschaften")>
    <Editor("System.Windows.Forms.Design.FileNameEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")>
    Public Property EigeneDatei_Ein As String

    Die <Editor...> Zeile über die Public Property Zeile kopieren und schon klappt es,

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Volker Bunge“ ()

    Hallo zusammen,

    ich habe da doch noch ein kleines Problem.

    Wenn ich den Pfad über die Eigenschaft ausgewählt habe, bleibt der Focus nicht auf dem Control sondern wechselt in die Hauptform.

    Der Dateipfad wird zwar richtig eingetragen, aber das Focuswechseln ist nicht so schön.

    Könnt Ihr mir da kurz helfen?

    Vielen Dank

    Volker

    Volker Bunge schrieb:

    Könnt Ihr mir da kurz helfen?
    Mach ein kleines Testprojekt, das den Effekt reproduziert.
    Bereinige das und hänge es gezippt (ohne bin, obj, vs-Ordner) an einen Post.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo RodFromGermany,

    ich hole den alten Beitrag mal wieder nach oben.

    In dem Anhang habe ich jetzt einmal zwei Projekte reingepackt. Einmal das Control selbst und dann ein kleines Testprogramm mit 3 dieser Controls.

    Jetzt kommt aber das für mich komische: Dieses Projekt funktioniert, aber mein eigentliches funktioniert immer noch nicht.
    In meinem Projekt habe ich dann mal in den beiden Eigenschaften alles nach _Eigene_Datei_fuer_False =value bzw. ...True im SET-Bereich deaktiviert. Somit kann keine weitere Aktion hier gestartet werden. Und trotzdem springt der Focus auf die Form meines Testprojektes. Im Anhang funktioniert alles so, wie es soll.

    Also muss doch bei mir hier noch eine Aktion gefeuert werden, die dann zu diesem Problem führt.

    Muss ich jetzt wirklich alle eigenen Properties ohne Handler-Aufruf durchprobieren oder gibt es hier noch andere Fehlersuchmöglichkeiten?

    Es gibt bei mir noch eine Eigenschaft, in der ich ein Verzeichnisauswahl-Dialogfenster mit
    <Editor("System.Windows.Forms.Design.SelectedPathEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", GetType(UITypeEditor))>
    aufrufe. Diese Eigenschaft funktioniert so wie gewünscht.

    Kann es evtl. an dieser Zeile liegen?
    Mein "fehlerhafter" Aufruf sieht so aus

    <Editor("System.Windows.Forms.Design.FileNameEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
    "System.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")>

    Die Zeile findet man ja so im Internet. Hoffentlich bin ich hier nicht der C&P-Bremse auf dem Leim gegangen.
    Kann aber auch irgendwie nicht sein, da sie ja auch in meinem Anhang so steht und funktioniert.

    Wäre schön, wenn Ihr mir helfen könnten, den blöden Fehler zu finden.

    Gruß

    Volker
    Dateien
    @Volker Bunge Pack zunächst das Projekt des UserControls in die Projektmappe des Hauptprogramms und verweise auf das Projekt, nicht aber auf die DLL.
    So kannst Du in das DLL-Projekt hinein debuggen.
    Was muss ich tun, um Deinen Effekt zu reproduzieren?
    Und:
    Wenn Du mich gezielt ansprechen willst, mach das mit @ ' RodFromGermany ' (ohne Leerzeichen).
    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).
    Programmierfragen über PN / Konversation werden ignoriert!

    Volker Bunge schrieb:

    Dieses Projekt funktioniert, aber mein eigentliches funktioniert immer noch nicht.
    Hast Du das Nichtfunktionierende irgendwo hier hochgeladen? Ansonsten wird es schwierig, nach einem Fehler zu suchen, wenn das Hochgeladene funktioniert wie gewünscht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo zusammen,

    sorry, dass ich mich erst jetzt wieder melde, hatte aber leider erst heute wieder Zeit weiterzumachen.

    Habe jetzt den Fehler gefunden. Es war kein Programmierfehler sondern ein "Bedienfehler" oder so etwas ähnliches.

    Folgendes:
    @'Fakiz hat mit seiner unscheinbar aussehenden Antwort voll ins Schwarze getroffen. Fakiz hier noch einmal vielen Dank.
    Ich habe den Hinweis am Anfang gar nicht so für voll genommen, da ich mir gedacht habe, ein Doppelklick auf die gewünschte Datei ist doch das Gleiche, wie ein Klick auf die Grafik und ein Klick auf Öffnen. Der Dateipfad wurde ja immer schon richtig übernommen.
    Blöd war leider nur, dass mein Fenster genau über der Testform lag und somit mein Doppelklick im Hintergrund gleich das Wechseln auf ein Control bzw. die Form bewirkte.
    Wenn man mit Öffnen aus der Anzeige raus geht, dann ist nicht der Fall. Natürlich kann man auch das Fenster so verschieben, dass man nicht auf einem Control/einer Form liegt. Aber das macht man ja kaum bis gar nicht.

    Somit ist mein Problem erst einmal hier behoben und ich kann endlich weiter machen.

    Vielen Dank noch einmal für Euren Support.

    Gruß

    Volker