Hallo.
Ihr wisst ja, dass ich nebenbei immer noch ein bisschen an der Hilfe von SharpDevelop schraube. Zurzeit ist das die dynamische Hilfe von SharpDevelop 2.0.
Wenn man im Form-Designer von #d ein Objekt anklickt, etwa eine TextBox, dann sucht sich die dynamische Hilfe die passenden Themen dazu heraus. Zusätzlich bietet sich auch eine Hilfe zu dem im Objektinspektor aktiven Punkt an. Im Beispiel (s. Bild im Anhang) wäre das etwa die
Text-Eigenschaft.
Dazu hänge ich einfach an den ermittelten Namen der Klasse (System.Windows.Forms.TextBox) den Namen der Methode an (*.Text). Einige Klassen erben aber solche Sachen von ihren übergeordneten Klassen. Und deshalb gibt es bspw. beim Button kein Thema zu
System.Windows.Forms.Button.Text, sondern da müsste ich auf
*.ButtonBase.Text ausweichen.
Tja, wie mache ich das am elegantesten? Momentan "schleife" ich mich durch die Klasse durch, bis ich bei der Top-Klasse angelangt bin und übergebe alle so ermittelten Suchbegriffe an die Hilfe. Ich weiß ja zu diesem Zeitpunkt noch nicht,
wann die Hilfe fündig werden wird, also kann ich leider auch nicht vorher aufhören:
Code:
Type myObject = selectedObject.GetType();
if(selectedItem != null)
{
this.AddToStringCollection(String.Format("!{0}.{1}", myObject.FullName, selectedItem.Label));
while(myObject.BaseType != null)
{
myObject = myObject.BaseType;
this.AddToStringCollection(String.Format("!{0}.{1}", myObject.FullName, selectedItem.Label));
}
}
"selectedObject" und "selectedItem" kommen quasi aus dem PropertyGrid von SharpDevelop. Das Ausrufungszeichen setze ich absichtlich davor, damit die Hilfefunktion später weiß, dass sie die Anzeige weiterer Themen mit
! am Anfang unterdrücken soll, wenn bereits zum ersten Begriff in der Liste was gefunden wurde.
Da muss es doch was Einfacheres/Eleganteres geben.