問題タブ [iextenderprovider]
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.
.net - UITypeEditor と IExtenderProvider
特定の種類のコントロールを追加のプロパティで拡張するエクステンダー (IExtenderProvider) があります。これらのプロパティの 1 つについて、UITypeEditor を作成しました。これまでのところ、すべて正常に動作しています。
エクステンダーには、UITypeEditor の一種のデフォルトとして使用しようとしているプロパティ自体もいくつかあります。私がしたいのは、(拡張コントロールではなく) エクステンダー自体にプロパティを設定できるようにすることです。拡張コントロールの追加プロパティの 1 つで UITypeEditor を開くと、 UITypeEditor をエクステンダーのプロパティの値に設定します。
簡単な例: ExtenderProvider にはプロパティ DefaultExtendedValue があります。フォームで、このプロパティの値を「My Value」に設定しました。拡張コントロールには、プロバイダーを通じて、UITypeEditor を持つプロパティ ExtendedValue があります。プロパティ ExtendedValue のエディターを開くと、デフォルト (初期) 値が「My Value」に設定されている必要があります。
これを行うのに最適な場所は、IWindowsFormsEditorService.DropDownControl または .ShowDialog を呼び出す直前の UITypeEditor.EditValue であると思われます。
唯一の問題は、問題のプロパティの値を読み取って UITypeEditor に設定するために、EditValue でエクステンダー プロバイダー自体を取得できない (または方法を発見していない) ことです。コンテキストによって拡張された制御が可能になりますが、この場合は役に立ちません。
私がしようとしていることを達成する方法はありますか? どんな助けでも大歓迎です!
ありがとうトム
@samjudson: それは悪い考えではありませんが、残念ながら、私はそこにたどり着きません. エクステンダー プロバイダーのインスタンスごとに、この既定値を個別に設定できるようにしたいと考えています。(拡張コントロールのグループごとに異なる値を持つ単一のフォームに複数ある場合があります。)
c# - .NET IExtenderProvider(C#)
TextBox
、ComboBox
およびPanel
を使用してコントロールを拡張しようとしてIExtenderProvider
いますが、正しく機能させることができません。私はその概念を完全には理解していないと信じ始めています。
誰かがどのように使用されるかについてのウェブ上の良いリソース(例を含む)を知っていますIExtenderProvider
か?
c# - IExtenderProvider プロパティが Designer の C# ウィンドウ アプリケーションで失われるのはなぜですか?
Controls.using Extender 用の IExtenderProvider (Extender) を作成しました。コントロールのコレクションを反復処理して検証しています。正常に動作しますが、一部のデザインを変更している間、またはデザイナーが更新されたとき (コードからいくつかのイベントを削除している間) 、Extender によって提供されるプロパティ (私の場合は Validation Order と Group) がデザイナーから失われ、コントロール自体がExtender コレクションに追加されていないため、アプリケーションによって行われた検証が崩壊しました (そして、もちろん、アプリケーション自体も) IExtenderProvider にも ShouldSerialize メソッドと Reset メソッドがありますが、何も役に立ちませんでした。すべてのコントロールを常にエクステンダーに表示する方法を教えてください。
ありがとう、マティ
propertygrid - PropertyDescriptorsをオーバーライドするのではなく、クラスに追加するにはどうすればよいですか?
ICustomTypeDescriptorを実装するクラスがある場合は、 GetProperties()メソッドをオーバーライドして、クラスのすべてのプロパティをカスタムPropertyDescriptorsに完全に置き換えることができます。
しかし、クラスの既存のプロパティを保持し、クラスに追加のプロパティを追加したい場合はどうなりますか?既存のクラスプロパティに追加されるカスタムプロパティ記述子のセットを返す方法はありますか?
たとえば、プロパティグリッドに表示されるカスタムプロパティをユーザーがプログラムで定義できるようにしたいとします。カスタムプロパティの値はDictionary(文字列キー、オブジェクト値)コレクションに格納されます。また、キー値に基づいてこのコレクションから値を読み書きするPropertyDescriptorsを追加したいと思います。
IExtenderProviderは、あるクラスのプロパティを別のクラスに追加するだけなので、機能しないと思います。ただし、実行時にプロパティを動的に追加および削除できる必要があります。ICustomTypeDescriptorも実装するIExtenderProviderクラスを使用して、追加するプロパティを実行時に把握できるようにすることはできますか?
c# - コントロールイベントIExtenderProviderを拡張する方法は?
IExtenderProviderを使用してコントロールにプロパティを追加するなど、コントロールにイベントを追加する方法はありますか?
errorpoviderを使用して独自のバリデーターを作成しようとしています。IExtenderProviderを使用して、errorproviderとerrortextをコントロールに追加しています。今、エクステンダークラスからイベントを発生させる必要があります。
スニペット:
c# - winform でコントロールの親を取得する
私はPanel1
これPanel2
とこれの中にありPanel3
ます...だから次のように想像してください
では、次のようなパス文字列を取得するにはどうすればよいですか
button1のすべての親を取得したい場合。
そして、IExtenderProvider を実装するクラスを定義することでそれを行うことができるので、設計時にそれを行うことは可能ですか。
c# - IExtenderProvider を使用して Type プロパティを提供する
WinForms デザイナーの一部のコントロールに Type プロパティを追加しようとしています。typeof(MyCompany.TheTypeIUsed) を使用してシリアル化するのが理想的です (BindingSource.DataSource をシリアル化できる方法)。
タイプのデザイナーを指定していないという事実はさておき、「タイプ」を使用する IExtenderProvider を追加すると、プロパティはプロパティ グリッドに表示されないようです。int または string またはその他の型を使用すると、正常に動作します。
これは IExtenderProvider 実装のバグですか、それとも追加の属性などが必要ですか?