問題タブ [propertygrid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - PropertyGridの斜体テキスト
PropertyGridを使用して、ICustomTypeDescriptorの実装を通じて公開されるカスタムプロパティを表示しています。
私のオブジェクトはツリー構造でセットアップされ、各プロパティの値は各オブジェクトに設定されるか、親オブジェクトから継承されます。PropertyGridで、選択したオブジェクトに設定されているプロパティ値と、親オブジェクトから継承されているプロパティ値をユーザーに視覚的に表示したいと思います。
現在、すべてのプロパティに2つのカテゴリを表示しています。1つのセットは、実際のオブジェクトで値が設定されていることを示し、設定されていない場合は空白のフィールドが表示されます。もう1つのセットは、オブジェクトに設定されているか、オブジェクトに設定されていない場合は継承される、オブジェクトに割り当てられたプロパティ値を示します。
これらの2つのグループを1つの購入にまとめて、通常のテキストでセットプロパティを表示し、斜体のテキストで値を継承したいと思います。ただし、ICustomTypeDescriptor.GetProperties()を使用してこれを行う方法はないようです。また、PropertyGridのプロパティはプログラムの実行中に作成されるため、簡単にアクセスすることはできません。
c# - 実行時の列挙型の作成/変更
私は、ユーザーが最終的にに表示される独自のカスタムプロパティを作成するオプションを持つプログラムを作成していますPropertyGrid
。今のところ、カスタムエディターをいじりたくないので、既にエディターが組み込まれているプリミティブ型のプロパティ(、、、、など)のみを許可しstring
てint
います。double
DateTime
bool
PropertyGrid
ただし、ユーザーに複数の選択肢のプロパティを作成するオプションを提供したいと思います。ここで、可能な値のリストを定義して、のドロップダウンリストとして表示することができますPropertyGrid
。
コードにハードコーディングするEnum
と、プロパティグリッドにそのプロパティがenum
ドロップダウンリストとして自動的に表示されます。しかし、実行時に列挙を作成または変更して、ユーザーが別のプロパティオプションを追加し、に戻ってPropertyGrid
新しいオプションをドロップダウンで表示できるようにすることはできますか?
アップデート
Patricksのコメントを考慮Enum
すると、この場合、sは正しい方法ではないと思います。では、代わりに、文字列のリストを使用してPropertyGrid
アイテムのドロップダウンにデータを入力するにはどうすればよいですか?カスタムエディタが必要ですか?
c# - ICustomTypeDescriptor、TypeDescriptionProvider、TypeConverter、UITypeEditor
ICustomTypeDescriptor、TypeDescriptionProvider、TypeConverter、および UITypeEditor を使用して、PropertyGrid の表示方法とオブジェクトとのインターフェイス方法を変更する方法を全体的に理解しようとしています。
これが正しいかどうか、または主要な概念やポイントを見逃していないかどうか、誰か教えてもらえますか? なぜ、いつ各クラスを使用するのかを理解しようとしています。
ICustomTypeDescriptor
- このインターフェイスをクラスに実装すると、クラスのネイティブ プロパティが完全にオーバーライドされ、ICustomTypeDescriptor.GetProperties() によって返される PropertyDescriptors に置き換えられます。
TypeDescriptionProvider
- クラスの既存のプロパティを拡張するために使用されます
- TypeDescriptionProvider は、TypeDescriptionProvider 属性を介してクラスに追加されます
- TypeDescriptionProvider の GetTypeDescriptor() メソッドは、型の既存のプロパティに追加される ICustomTypeDescriptor を返します。
- PropertyGrid は、Reflection によって検出されたクラスのプロパティと、TypeDescriptionProvider によってクラスに追加されたプロパティの両方を表示します。
タイプコンバーター
- タイプ間の変換
- プロパティ グリッドで表示/編集できる複合型とプリミティブ型の間の変換に使用される PropertyGrid の使用に関して。
- TypeConverter の GetStandard 値メソッドを使用して、プロパティ グリッドで可能な値のリストを表示することもできます。
UITypeEditor
- 複合型のプロパティを操作するためのカスタム エディターを定義します。
- 属性を介してプロパティに関連付けられます。
そのため、ICustomTypeDescriptor TypeDescription プロバイダーは、オブジェクトのプロパティ全体を追加/変更/置換するために使用されます。TypeConverter と UITypeEditor は個々のプロパティに適用され、それらの特定のプロパティがどのようにインターフェースされるかを制御します。
c# - プロパティ グリッドにイベントが表示されない
特別な検索テキスト ボックスを作成しています。特に、次の 2 つのイベントがあります。
問題は、下の 2 つだけがデザイン ビュー プロパティのイベント エクスプローラーに表示されることです (名前が何であれ...)。そして、私はなぜだろうと思っています。標準を使用していないからEventArgs
ですか?ただし、そうではないはずです。つまり、それを使用しない他のイベントがあります...キープレス関連のイベントなど...
クラスは次のGenericEventArgs<T>
ようになります。
ここで何が間違っていますか?
c# - StandardValuesSupported とオートコンプリートを備えた StringConverter
標準値を使用して StringConverter を開発したいと考えています。これを PropertyGrid にアタッチすると、オートコンプリート機能を備えたコンボボックスのように動作します。以下の例では、comboBox が表示されますが、オートコンプリートはありません。ユーザーはそれを展開して、項目の 1 つを手動で選択する必要があります。コンボボックスが自動的に一致するオプションを選択するように、ユーザーがオプションの 1 つの先頭を入力できるようにする方法はありますか?
GetStandardValues によって返されるリストは動的でなければならないため、そこで列挙型を使用することはできません。上記の例をhttp://www.codeproject.com/KB/cpp/dropdownproperties.aspxから取得しました。
.net - PropertyGrid でカテゴリの並べ替えをカスタマイズするにはどうすればよいですか?
のカテゴリの並べ替えをカスタマイズするにはどうすればよいPropertyGrid
ですか?
次のいずれかを設定すると...
...その後、カテゴリはアルファベット順に並べられます。(「アルファベット順」は、各カテゴリ内のプロパティに適用されるようです。) を使用するPropertySort.NoSort
と、カテゴリ化が失われます。
これは非常に簡単PropertyGrid
です。SelectObject
options
適切に装飾されたプロパティを持つクラスのインスタンスです。
私は半ダースのカテゴリに数ダースのプロパティを持っています。
使いやすさを維持しながら、カテゴリの並べ替え順序を調整する方法はありますSelectedObject
か?
c# - クローズド ソース タイプのすべてのプロパティにカスタム UITypeEditor を挿入するにはどうすればよいですか?
カスタム UITypeEditor を作成した特定の型のすべてのインスタンスに EditorAttribute を配置することは避けたいと思います。
ソースを変更できないため、タイプに EditorAttribute を配置できません。
使用される唯一の PropertyGrid インスタンスへの参照があります。
PropertyGrid インスタンス (またはすべてのインスタンス) に、特定のタイプに遭遇するたびにカスタム UITypeEditor を使用するように指示できますか?
これは、.NET 2.0 以降でこれを行う方法の開始点を提供する MSDN の記事です。
.net - .Net でプロパティの値を動的に列挙する
TreeView コントロールの ImageList プロパティがフォーム上のすべての ImageList を一覧表示する方法を知っていますか? 同様のものが必要ですが、文字列のリストが必要です。これは列挙に似ていますが、PropertyGrid でプロパティを公開するオブジェクトを使用して、実行時に定義されます。
したがって、{ "foo", "bar", "grill" } のような文字列のリストでは、プロパティはそれらをリストする必要がありますが、その文字列のリストが変更された場合 (たとえば、「bbq」項目を追加した場合)、プロパティは { を列挙する必要があります。 "foo", "bar", "grill", "bbq" } 代わりに。
c# - C# PropertyGrid ドラッグ ドロップ
VS2005 (.NET 2.0) を使用して、C# でプロパティ グリッドへのドラッグ/ドロップ サポートを実装しようとしています。propertygrid は dragenter などのイベントを処理できますが、ドラッグ イベント中にポインターの下にある griditem を取得する方法はないようです。これまでのところ、selectedgriditem プロパティを使用してカスタム プロパティ記述子を取得し、値を設定することができましたが、これには、ドラッグ アンド ドロップ操作を開始する前に、グリッド項目が既に選択されている必要があります。
これを実装して運が良かった人はいますか?
ありがとう :-)