DataGridViewに表示したいプロパティがありますが、同じオブジェクトがPropertyGridに表示されている場合はそうではないとします。私は使用できることを知っています[Browsable(false)]
が、それは両方のビューでそれを隠します。を実行することもできますがgridView.Columns["blah"].Visible = false;
、これは、DataGridViewには非表示になり、PropertyGridには非表示になるため、私が望むものとは逆になります。逆を行う方法はありますか?(同じデータから1つのフィールドを除いたものを保持するためだけに、まったく新しいDataTableを作成し、代わりにすべてを再バインドするのは簡単です。これは、実際に物事を行うための厄介な方法です。)または、DataGridViewに列を追加するソリューションを使用することもできます。それは実際のクラスには存在しません。
質問する
2421 次
1 に答える
6
PropertyGridのBrowsableAttributesプロパティを使用することで、この問題を解決することができます。まず、次のような新しい属性を作成します。
public class PropertyGridBrowsableAttribute : Attribute
{
private bool browsable;
public PropertyGridBrowsableAttribute(bool browsable){
this.browsable = browsable;
}
}
次に、PropertyGridに表示するすべてのプロパティにこの属性を追加します。
[DisplayName("First Name"), Category("Names"), PropertyGridBrowsable(true)]
public string FirstName {
get { return ... }
set { ... }
}
次に、BrowsableAttributesプロパティを次のように設定します。
myPropertyGrid.BrowsableAttributes = new AttributeCollection(
new Attribute[] { new PropertyGridBrowsableAttribute(true) });
これにより、プロパティグリッド内の属性付きプロパティのみが表示され、DataGridViewは、わずかなコーディング作業ですべてのプロパティにアクセスできます。
Browsable属性のドキュメントには、プロパティウィンドウでの使用のみが明確に記載されているため、私は引き続きTergiverを使用して、この動作をバグと呼びます。
(クレジットはhttp://www.mycsharp.de/wbb2/thread.php?postid=234565のユーザー「maro」に送られます)
于 2012-08-31T15:05:24.107 に答える