2009-10-06 13 views

Antwort

15

Von Code, in der Nähe Sie tun können, um es zu verbergen, und es vielleicht einen Schmerz macht direkt zu nennen - beachten Sie, dass auch versteckt, wenn es aufrufbar ist, und nichts davon arbeitet an einem Guss:

// about the closest you can do, but not really an answer 
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] 
[Obsolete("just cast me to avoid all this hiding...", true)] 
public new ContentAlignment TextAlign { get; set; } 

Persönlich würde ich nicht stören. Es ist nicht robust (nur Cast).

+0

Danke Marc. Mit Cast meinen Sie in diesem Fall die Casting-Klasse? –

1

Vielleicht, was Sie tun möchten, ist von ContainerControl oder UserControl ableiten, fügen Sie einen Button zu diesem Steuerelement und nur die Teile der Button-Oberfläche, die Sie behalten möchten.

1

Nein, Sie können sie aus dem Designer entfernen (wie gezeigt), aber Sie können sie nicht wirklich verstecken, da dies das Substitutionsprinzip verletzen würde. Es wurde gefragt, & oft hier beantwortet, siehe zum Beispiel this SO question.

2

Sie können das Attribut [EditorBrowsable] als documented here verwenden.

[EditorBrowsable(EditorBrowsableState.Never)] 
public bool HideMeInIntellisense 
{ 
    // ... 

Aus der Dokumentation:

... der Motor IntelliSense in Visual Studio verwendet dieses Attribut, um zu bestimmen, ob eine Eigenschaft oder Methode zu zeigen.

Benutzer können dies jedoch in VS-Einstellungen überschreiben. ReSharper verfügt auch über eine Einstellung, die steuert, ob dieses Attribut in seinem IntelliSense berücksichtigt wird.

Aus Neugier, warum möchten Sie etwas vor Benutzern verbergen? Nur weil ein Mitglied in der oben beschriebenen Weise versteckt ist, heißt das nicht, dass Sie es nicht im Code verwenden und es erfolgreich kompilieren könnten. Es hemmt nur die Auffindbarkeit des Mitglieds.

+0

Durch Verstecken wollte ich es komplett "entfernen", damit Sie nicht darauf zugreifen können. Das liegt daran, dass einige der Eigenschaften von Button nicht auf mein Steuerelement zutreffen. –

+0

Haben Sie darüber nachgedacht, ein Elternteil der Button-Klasse zu unterklassifizieren und das, was Sie benötigen, neu zu implementieren? Ich würde in Betracht ziehen, eine neue Frage zu stellen, die sich mit dem Grund befasst, warum Sie das Verhalten der Schaltfläche ändern müssen, und nach verschiedenen Möglichkeiten sucht, dies zu erreichen. –

0

Warum machst du es nicht privat? Es garantiert, dass Vorfahren es nicht sehen werden. Edit: In diesem Fall müssen Sie eine neue Klasse von der Basis erben und verwenden Sie Ihre neue Klasse, die diese Eigenschaft jetzt verbirgt.

public class MyTextBox: TextBox 
{ 
... 
     private new ContentAlignment TextAlign 
     { 
      get { return base.ContentAlignment; } 
      set { base.ContentAlignment = value; } 
     } 
} 
+0

Weil dies möglich oder nicht möglich ist. Manchmal möchten Sie einfach etwas aus der GUI verstecken. –

+0

Ich habe es gerade versucht - die Eigenschaft erscheint immer noch im Designer. – JPNotADragon

Verwandte Themen