SmartTag zu UserControl hinzufügen

  • C#
  • .NET (FX) 1.0–2.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von TRiViUM.

    SmartTag zu UserControl hinzufügen

    Hallo liebe Community,

    weiß jemand von euch, wie man dieses Menü oder diesen kleinen Pfeil in der oberen rechten Ecke nennt und wie man es in ein UserControl implementieren kann?

    Das Beispiel ist hier mal von einer PictureBox:


    Danke schonmal... :saint:

    EDIT:
    Also der Name scheint schonmal SmartTag zu sein...
    Und hier wird erklärt, wie man es implementiert: codemag.com/Article/0707081/Ad…to-Windows-Forms-Controls


    Hier wurde das Thema schon mal für VB behandelt: "Aufgaben-Pfeil" bei Controls
    Hier mal eine kleine Anleitung für C#:

    1.) UserControl erstellen (entwerder von UserControl oder von Control erben)
    2.) Den Verweis auf System.Design hinzufügen
    3.) SmartTag-Funktionalität implementieren:
    Spoiler anzeigen

    C#-Quellcode

    1. public class SmartTagDesigner : System.Windows.Forms.Design.ControlDesigner
    2. {
    3. private DesignerActionListCollection lists;
    4. public override DesignerActionListCollection ActionLists
    5. {
    6. get
    7. {
    8. if (lists == null)
    9. {
    10. lists = new DesignerActionListCollection();
    11. lists.Add( new SmartTagActionList( this.Component ) );
    12. }
    13. return lists;
    14. }
    15. }
    16. }
    17. public class SmartTagActionList : DesignerActionList
    18. {
    19. private ucTest userControl; //hier die UserControl-Klasse angeben
    20. private DesignerActionUIService designerActionSvc = null;
    21. public SmartTagActionList(IComponent component) : base( component )
    22. {
    23. this.userControl = (ucTest)component; //hier die UserControl-Klasse angeben
    24. this.designerActionSvc =
    25. (DesignerActionUIService)GetService( typeof( DesignerActionUIService ) );
    26. }
    27. private PropertyDescriptor GetPropertyByName(string propName)
    28. {
    29. PropertyDescriptor prop = default( PropertyDescriptor );
    30. prop = TypeDescriptor.GetProperties( userControl )[propName];
    31. if (prop == null)
    32. throw new ArgumentException( "Invalid Property", propName );
    33. else
    34. return prop;
    35. }
    36. public override System.ComponentModel.Design.DesignerActionItemCollection GetSortedActionItems()
    37. {
    38. DesignerActionItemCollection item = new DesignerActionItemCollection();
    39. //hier die gewünschten properties hinzufügen, die im SmartTag angezeigt werden sollen:
    40. item.Add( new DesignerActionPropertyItem( "TestBool", "Boolean for testing SmartTag", "Appearance", "The expanded/collapsed state." ) );
    41. return item;
    42. }
    43. //für jede sichtbare SmartTag-Property hier die ControlProperty erstellen:
    44. public bool TestBool
    45. {
    46. get { return this.userControl.TestBool; }
    47. set { GetPropertyByName( "TestBool" ).SetValue( userControl, value ); }
    48. }
    49. }

    4.) Über der Klasse vom UserControl folgende Zeile angeben:

    C#-Quellcode

    1. [Designer( typeof( SmartTagDesigner ) )]


    :thumbsup:
    Bilder
    • PictureBoxControlDesignerExtension.PNG

      3,66 kB, 361×108, 428 mal angesehen

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „TRiViUM“ ()

    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!