none
Intellisense-Vorschlagsliste - bei Variablen-Zuweisung (eigener Datentyp) DefaultInstanzen anbieten RRS feed

  • Frage

  • Hallo,

    Ich habe eine Klasse geschrieben. Wenn ein der Benutzer meiner Assembly eine Variable von diesem Typ deklariert und zuweisen will soll ihm Intellisense ein paar "Default-Instanzen" vorschlagen.

    Z.B. beim Tippen von

    "Dim x as MyClass = "

    sollte Intellisense eine Liste von Objekten anbieten die ich vorher als Public Shared ReadOnly Properties in einer Klasse "MyClasses" angelegt haben. 
    Das folgt genau dem Muster was "Color/Colors" , "Pen/Pens", "Brush/Brushes" verwendet.

    Zum Vergleich:

    Wenn ich "Dim x as Color = " schreibe bietet mir Intellisense eine Auswahl an, die scheinbar aus den  Public Shared Readonly Properties der "Colors" - Klasse stammt.
    WIE macht das Visual Studio das? Woher weiß Intellisense das es diese Liste verwenden soll und wie kann ich das machen, dass das bei meiner Klasse auch so funktioniert?

    Vielen Dank,
    MFG,
    Stefan
    Freitag, 7. August 2009 08:44

Antworten

Alle Antworten

  • Hallo Stefan,

    Schau mal ob Dir folgender Artikel weiter hilft:

    http://msdn.microsoft.com/de-de/library/system.componentmodel.editorbrowsableattribute.aspx


    Grüße,

    Robert

    Freitag, 7. August 2009 16:54
    Moderator
  • Hallo Robert,
    leider hilft mir der Artikel nicht weiter. Ich habe mir schon einige Attribute angeschaut, aber irgendwie nicht das richtige gefunden. Mit diesem Artikel
    http://www.codeproject.com/KB/vb/using_propertygrid.aspx und dem TypeConverter-Attribut bin ich einen kleinen Schritt weitergekommen. Ich habe von TypeConverter geerbt und die GetStandardValues-Funktion überschrieben, so dass sie eine von mir erzeugte Vorschlagsliste zurückgibt.
    Das funktioniert auch ganz prima - aber nur im Designer. Wenn ich meinen Datentyp als eine Eigenschaft z.B. eines UserControls verwende und den Wert zuweisen will, bekomme die von mir (per TypeConverter-Klasse) definierte Vorschlagsliste als ComboBox angezeigt.

    ABER:
    Es geht hier nicht um GUI, sondern um den Code-Editor. Wenn ich per Programmcode einer Eigenschaft einen Wert zuweisen will, soll Intellisense genau das tun, was das PropertyGrid des Designers tut wenn ich im Designer die Eigenschaft setzen will: die im TypeConverter definierte Vorschlagsliste anbieten.
    Montag, 10. August 2009 15:00
  • Okay, ich habs jetzt selbst gefunden:

    http://www.activevb.de/tutorials/tut_enumtypes/tut_enumtypes.html

    Damit es mit Intellisense funktioniert muss das undokumentierte Kommentar-Tag "<completionlist cref="MyTypes"/> verwendet werden!
    Den TypeConverter in dem Link muss man nur verwenden, wenn man die Vorschlagsliste auch im Designer nutzen will (siehe vorheriges Post). 

     

    • Als Antwort markiert SG83 Dienstag, 11. August 2009 10:23
    Dienstag, 11. August 2009 10:23