PropertyGrid ... Kullanıcılar için sadece birkaç tane bırakmak istersiniz. Ama şimdi bütün görmek ve Dock veya İmleç ve bu tür ... şimdilik açık dileğiyle ...PropertyGrid: Temel sınıf özelliklerini gizle, nasıl?
cevap
kullanın bu özelliğin gibi bir şey gördüklerinde kullanıcılar karıştı olacaktır: miras için
[Browsable(false)]
public bool AProperty {...}
özellikleri:
:[Browsable(false)]
public override bool AProperty {...}
başka bir fikir (tüm temel sınıf üyelerini gizlemek için çalışıyoruz beri)
ve sonra özellik ızgara için:
MyCtrl tx = new MyCtrl();
pg1.SelectedObject = tx.ExtraProperties;
aşağı tarafı MyCtrl
özelliklerini gizlemek için
tx.ExtraProperties.PropertyA = "foo";
için
tx.PropertyA = "foo";
gelenler özelliklerinin erişim düzeyinizi değiştirir olduğunu, kullanım Tesiste [Browsable(False)]
özniteliği. gizlemek için
[Browsable(false)]
public bool AProperty { get; set;}
proeprties miras, üsse geçersiz kılmak ve göz atılabilir niteliğini uygulamak gerekir.
[Browsable(false)]
public override string InheritedProperty { get; set;}
Not: Sen koşullara bağlı olarak virtual
veya new
anahtar kelime eklemek gerekebilir.
ControlDesigner
kullanmak daha iyi bir yaklaşım olacaktır. Tasarımcının, PropertyGrid
tarafından çıkarılmış olan koleksiyona fazladan özellikler eklemek için kullanılabilen PreFilterProperties
adı verilen bir geçersiz kılma vardır.
Designer(typeof(MyControlDesigner))]
public class MyControl : TextBox
{
// ...
}
public class MyControlDesigner : ...
{
// ...
protected override void PreFilterProperties(
IDictionary properties)
{
base.PreFilterProperties (properties);
// add the names of proeprties you wish to hide
string[] propertiesToHide =
{"MyProperty", "ErrorMessage"};
foreach(string propname in propertiesToHide)
{
prop =
(PropertyDescriptor)properties[propname];
if(prop!=null)
{
AttributeCollection runtimeAttributes =
prop.Attributes;
// make a copy of the original attributes
// but make room for one extra attribute
Attribute[] attrs =
new Attribute[runtimeAttributes.Count + 1];
runtimeAttributes.CopyTo(attrs, 0);
attrs[runtimeAttributes.Count] =
new BrowsableAttribute(false);
prop =
TypeDescriptor.CreateProperty(this.GetType(),
propname, prop.PropertyType,attrs);
properties[propname] = prop;
}
}
}
}
Sen temiz bir şekilde ayrılmasına izin verir propertiesToHide
için gizlemek istediğiniz proeprties isimlerini ekleyebilir.
Kredi nereye ödenecek: Yaklaşık sınıf miras değil http://www.codeproject.com/KB/webforms/HidingProperties.aspx#
bu doğru .. teşekkürler. ne anlama gelir ("<{0}: MyControl runat =" server "> {0}: MyControl>")? , ASP'den mi? WinForms kullanıyorum ... –
Evet. Winforms için bu bölümü göz ardı edebilirsiniz. Cevabımı güncelleyeceğim. – Mrchief
Denedim, ama yardımcı olmadı. RUNTIME süresince çalışır mı? –
- 1. gizle türetilmiş sınıf
- 2. PropertyGrid Güncellemesi
- 3. Tüm sınıf özelliklerini listeleme
- 4. Temel sınıf
- 5. Temel Sınıf
- 6. Winforms PropertyGrid - özellikler düzenlenemez
- 7. WPF PropertyGrid
- 8. XSD.exe'den oluşturulan sınıf özelliklerini doldurun.
- 9. MATLAB: sınırlı sınıf özelliklerini keşfedin
- 10. PropertyGrid özel koleksiyon editörü
- 11. Miras sınıfını, temel sınıf
- 12. Tanımsız temel sınıf, mevcut
- 13. VS2010 proje özelliklerini göstermiyor ("temel RCW")?
- 14. soyut temel sınıf tanımı
- 15. Temel sınıf dizisi
- 16. Django Çocuk Sınıf Names temel sınıf Filtre
- 17. Temel varlık ve temel sınıf haritası nasıl oluşturulur Fluent NHibernate
- 18. Sınıf işlevlerini gösteren araç çubuğunu gizle
- 19. Türetilmiş sınıf yapıcı temel sınıf yapıcısını çağırıyor
- 20. Kullanmadan Gizle Üyeyi Gizle
- 21. Temel sınıf/Varlık EntityFramework 5.0
- 22. Türetilmiş bir sınıfı, temel sınıf
- 23. Türetilmiş sınıf kopyalama kurucusundan temel sınıf kopya oluşturucu nasıl aranır?
- 24. nasıl bir temel sınıf oluşturduk Python sınıf init
- 25. Temel sınıf çıkarmak için araç?
- 26. python'da temel sınıf türü olsun
- 27. PropertyGrid özellik öğesinin değerini değiştirme
- 28. Numpy'nin stilini kullanarak sınıf ve nesne özelliklerini nasıl belgelemeliyim?
- 29. propertygrid özelliklerinde combobox özelliğini değiştirin
- 30. türetilmiş sınıftan temel sınıf oluşturucu arama değil
, ben temel sınıf özelliklerini gizlemek istiyorum. Bu durumda: TextBox sahne. Temel sınıf sahne nasıl gizlenir? soru bu. –
Evet, işe yarıyor, biliyorum. Sorgumda şu soruyu görüyorsunuz: "Bu durumda hangi teknik uygulanabilir? Saklanmak mı? Temel sınıfın her bir pervanesi mi?" ... Sadece merak ettim ki öznitelikleri filtreleyebilirim ... ama çalışma zamanı gibi değil tüm nitelikler derlenmiş derleme için statik olduğundan, mümkün. –
Lars, lütfen cevabımı okuyun. Tam olarak ihtiyacım olan şey buydu ... –