PropertyGrid ...ユーザーIDのためにいくつか残したいのですが。しかし、今、私はすべての参照、およびドックまたはカーソルのようなものとな... が、それは今...PropertyGrid:基本クラスのプロパティを非表示にする方法
答えて
使用するための明確なのですホープ、この属性を参照するときに、ユーザーが混乱し、次のようになります。継承のために
[Browsable(false)]
public bool AProperty {...}
をプロパティ:
:[Browsable(false)]
public override bool AProperty {...}
もう一つのアイデア(あなたはすべての基本クラスのメンバを非表示にしようとしているので)
してから、プロパティグリッドのために:
MyCtrl tx = new MyCtrl();
pg1.SelectedObject = tx.ExtraProperties;
下側には、使用、それはMyCtrl
プロパティを非表示にするには
tx.PropertyA = "foo";
から
tx.ExtraProperties.PropertyA = "foo";
にこれらのプロパティのアクセスレベルを変更していますプロパティの[Browsable(False)]
属性。 を非表示にする
[Browsable(false)]
public bool AProperty { get; set;}
が proeprtiesを継承し、あなたはベースをオーバーライドして、閲覧可能な属性を適用する必要があります。
[Browsable(false)]
public override string InheritedProperty { get; set;}
注:あなたは状況に応じてvirtual
またはnew
キーワードを追加する必要があります。
より良いアプローチは、ControlDesigner
を使用することです。デザイナーにはPreFilterProperties
というオーバーライドがあり、これはPropertyGrid
によって抽出されたコレクションに余分な属性を追加するために使用できます。
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;
}
}
}
}
あなたがきれいに分離することを可能にするpropertiesToHide
に非表示にしたいproeprtiesの名前を追加することができます。原因
クレジット:それは継承されたクラスについてではありませんhttp://www.codeproject.com/KB/webforms/HidingProperties.aspx#
そうです。ありがとう。 意味( "<{0}:MyControl runat ="サーバー ">(0):MyControl>")? ASPからのものですか?私はWinFormsを使用しています... –
はい。 Winformsの部分は無視できます。私は私の答えを更新します。 – Mrchief
私は試しましたが、助けになりませんでした。ランタイム中に機能しますか? –
- 1. PropertyGridのオブジェクトの「値」プロパティを表示する方法
- 2. PropertyGridでPropertyTabsを非表示にする方法は?
- 3. ironrubyの基本クラスのプロパティ(変数)にアクセスする方法は?
- 4. C#で基本クラスのプロパティを非表示にするにはどうすればよいですか?
- 5. クラスのプロパティをあるクラスに公開して別のクラスに非表示にする方法
- 6. プロパティに基づいてアンドロイドのテキストビューを非表示にする
- 7. 基本クラス静的プロパティを派生クラスと正しく共有する方法
- 8. Json.Net複雑なオブジェクトの非直列化 - 基本クラスをプロパティとして含む基本クラス
- 9. チェックボックスの値に基づいてクラスを表示/非表示Jquery
- 10. ExtendedToolkit PropertyGridコントロールでプロパティを表示/非表示することはできますか?
- 11. DataGridViewでクラスの特定のプロパティを非表示にする
- 12. サブクラス 'プロパティから基本クラス'コンストラクタにアクセス
- 13. jquery:クラス名の変数に基づいた非表示/表示
- 14. Details基本データのフィールドを保存する方法を表示
- 15. クラスを表示/非表示にする
- 16. チーム基盤サーバー2013のコードタブを非表示にする方法
- 17. JustMockLiteを使用して基本クラスのプロパティを配置する方法
- 18. DataContractSerializerで基本クラスのプロパティのみをシリアル化/逆シリアル化する方法
- 19. 基本クラスのプロパティのカスタムシリアル化
- 20. カントのアクセス基本クラスのプロパティは
- 21. isSelectedプロパティと別のリストアイテムプロパティに基づいて表示/非表示を切り替える方法は?
- 22. 派生クラスを基本クラスにシリアル化する方法は?
- 23. c#抽象基本クラスのプロパティ
- 24. Observableプロパティに基づいてポップアップメッセージを表示する方法は?
- 25. 派生クラスのパブリックメソッドを非表示にする方法は?
- 26. JavaScriptで特定のクラスを非表示にする方法
- 27. 残りのクラスからバッキングフィールドを非表示にする方法
- 28. クラスのプライベートメンバーを非表示にする方法は?
- 29. 2回目のクリックでクラスを非表示にする方法
- 30. ブートストラップデータテーブルの列を非表示/非表示にする方法は?
は、私は、基本クラスのプロパティを非表示にします。その場合:TextBoxの小道具。ベースクラスの小道具を隠すには?それが問題です。 –
はい、うまくいきます。あなたは私の質問に「どのようなテクニックが当てはまるのでしょうか?隠れていますか?基本クラスの各小道具?」...私はおそらく属性をフィルタリングすることができますか?すべての属性がコンパイルされたアセンブリに対して静的であるため可能です。 –
ラース、私の返信をお読みください。それはまさに私が必要としていたものでした... –