問題タブ [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# - プロパティ グリッドのカスタム フィールドに類似値を表示するにはどうすればよいですか?
フォーム上のすべてのコントロールを管理するのに役立つプロパティ グリッドがあります。これらのコントロールはデザイナー タイプの人向けなので、ユーザー インターフェイスについてはあまり心配していません... 誰かが複数のオブジェクトを選択するまでは。
これらの共通オブジェクトの「BottomDiameter」プロパティの UITypeEditor があります。単位 (メートル対フィート) を追跡し、オンザフライでいくつかの優れた処理を行います。ただし、誰かが 2 つまたは 3 つの共通オブジェクトを選択すると、BottomDiameter は、同じテキスト文字列として評価されても空白になります。
空白になっている理由 (と思います) は、実際には 3 つの個別の objDiameter オブジェクトであるためです。プロパティ グリッドが他のすべてのプロパティと同じように動作し、同じ文字列に評価される場合に値を表示するようにするにはどうすればよいでしょうか?
更新: たとえば、「アンカー」プロパティには「上、右」というテキスト出力がありますが、プルダウンするとオブジェクトになります。しかし、フォーム上で同じアンカー設定を持つ 5 つのオブジェクトを選択すると、プロパティ グリッドに文字列 "Top, Right" が表示されます。
c# - 読み取り専用のカスタム UITypeEditor の省略記号を削除するにはどうすればよいですか?
プロパティ グリッドに同じタイプの 2 つのフィールドがあります。ただし、一方は読み取り専用で、もう一方は編集可能です。
これらのフィールドはどちらもカスタム タイプであるため、省略記号 ([...]) ボタンをフィールドに配置するカスタム UITypeEditor があります。
この例では、FactoredAreaMod を編集できますが、両方に省略記号があるため、ユーザーに大きな混乱を引き起こします。それをオフにする方法はありますか??
.net - PropertyGrid のフィールドをプログラムで非表示にする
使用する
いくつかのプロパティで構成されるクラス (別のクラスのプロパティ) の宣言。
このクラスのインスタンスを単純にロードします...
明らかに、コードでプロパティグリッドを手動で構築したくありません。その方法は知っています。
しかし、ここに問題があります。プロパティの値によっては、他の特定のプロパティが表示されないようにする必要があります。
プロパティ宣言の属性。
プロパティグリッドのすべての構築を手動で処理することなく、プログラムでこれを行う方法はありますか>
c# - 複数のアイテムが選択されている場合、カスタム文字列を表示するにはどうすればよいですか?
フォーム上のすべてのコントロールを管理するのに役立つプロパティグリッドがあります。これらのコントロールはデザイナータイプの人向けなので、誰かが複数のオブジェクトを選択するまで、ユーザーインターフェイスについてはそれほど心配していません。
これらの一般的なオブジェクトの「EffectiveDiameter」プロパティ用のUITypeEditorがあります。それは単位(メートル対フィート)を追跡し、その場でいくつかの素晴らしいことをします。ただし、誰かが2つまたは3つの一般的なオブジェクトを選択すると、同じテキスト文字列に評価されても、EffectiveDiameterは空白になります。
たとえば、ほとんどのコントロールでは、Microsoftには「Top、Right」のテキスト出力を持つ「Anchor」プロパティがあります。あなたがそれを引き下げるとき、それは素晴らしいUITypeEditorを持つオブジェクトです。ただし、すべて同じアンカー設定を持つ5つのオブジェクトをフォームで選択すると、プロパティグリッドに「Top、Right」という文字列が表示されます。
カスタムオブジェクトをいくつか選択した場合(すべて同じ有効直径)、AnchorのようにEffectiveDiameterをPropertyGridに表示するにはどうすればよいですか?現在、そのフィールドは常に空白です。
c# - プロパティグリッドには一部のカテゴリのみが表示されます
次のプロパティカテゴリを持つオブジェクトで使用されるPropertyGridを取得しました:Style、Calcul、Misc
私が欲しいのは、Calculカテゴリのみをユーザーに表示することですが、これらすべてのプロパティをVisual Studioで表示したいので、browsable属性は使用しません。
したがって、私が必要としているのは、コード内のソリューションです。
.Net 3.5 c#を使用しています
.net - .Net PropertyGrid スレッド セーフ
私PropertyGrid
のアプリケーションには、任意のオブジェクトの編集に使用される があります。これらのオブジェクトも参照する別のスレッドで任意のサブルーチンを実行できるようにする必要があります (興味がある場合は検索機能)。明らかな問題は、ユーザーがこれらのオブジェクトの 1 つを、検索スレッドが読み取っているのと同時に編集している可能性があることです。これは避けるのが望ましいでしょう (ただし、検索スレッドは読み取っているだけなので、おそらく重大な結果にはなりませんが、書いていません)。
検索スレッドから呼び出すlock(obj)
のは簡単ですが、ドキュメントに目を通し、Reflector の PropertyDescriptorGridEntry コードを簡単に調べたSystem.Threading.Monitor.Enter()/Exit()
ところ、PropertyGrid で問題のオブジェクトの呼び出しを使用する類似の場所が見つからないようです。これを十分に簡単にするBeginEditおよびEndEditイベントがあることを望んでいましたが、そのようなものを見つけることができないようです。別のオブジェクトが選択されるまで検索スレッドが明らかにブロックされるため、PropertyGrid に表示されている間はオブジェクト全体をロックしたくありません。
私は Windows フォームのスレッド モデルに少し慣れていないので、見落としていた明らかな答えがあることを願っています。何か助けはありますか?
編集:検索を非同期に実行する前にオブジェクトを同期的に複製することは、検索自体を同期的に実行するほど非効率的である可能性があります-非同期で実行するポイントは、もちろん、検索の実行中にユーザーが作業を継続できるようにすることです。私が調べているデータセットは最終的に任意に大きくなるため、検索はうまくスケーリングする必要があります.
c# - ShowDialog、PropertyGrid、およびタイマーの問題
奇妙なバグがあります。理由についての手がかりがあれば教えてください。
メイン フォームにTimer
( System.Windows.Forms.Timer
) があり、いくつかの更新が発生し、最終的にメイン フォームの UI も更新されます。ShowDialog()
次に、メソッドを使用してメイン フォームからエディターを開きます。このエディタにはPropertyGrid
( System.Windows.Forms.PropertyGrid
) があります。
私は毎回それを再現することはできませんが、エディターでそのプロパティ グリッドでドロップダウンを使用すると、スタックします。つまり、[OK]/[キャンセル] ボタンでフォームが閉じられず、プロパティ グリッドが使用できなくなり、フォームの [閉じる] ボタンが表示されます。ヘッダーが機能しません。
バックグラウンドで例外はありません。プロセスを中断すると、最初に述べた更新に関連する計算をアプリが実行していることがわかります。
何をお勧めしますか?どんなアイデアでも大歓迎です。
c# - PropertyGrid コントロールの既定の組み込みエディター
これに対する答えがどこにも見つからないようです。3.5 Framework PropertyGrid コントロールに組み込まれている既定のエディター/コンバーター。そうでなければ、どのオブジェクトタイプを投げることができ、確実に表示および編集できるでしょうか? カスタム エディターの使用に関する多くのチュートリアルを見つけました (ある時点で使用する可能性があります)。しかし、現在私のプログラムでは、ユーザーが独自のカスタム プロパティを作成できるようにしており、PropertyGrid でそれらを編集することを想定して、どのオブジェクト タイプを許可する必要があるかを知りたいと考えています。
c# - 型の既定の PropertyDescriptors を取得します
PropertyGrid
を実装して、オブジェクト タイプの表示方法をカスタマイズしていますICustomTypeDescriptor
。キーと値の単一の辞書に格納される独自のカスタム プロパティをユーザーが作成できるようにしています。これらの値のすべてを作成PropertyDescriptors
し、プロパティ グリッドで表示できます。ただし、オーバーライドメソッドPropertyGrid
ではなく、リフレクションによって設定された場合に表示されるすべての既定のプロパティも表示したいと考えています。ICustomTypeDescriptor.GetProperties
これで、オブジェクトの型を取得してから を取得する方法がわかりましたが、これはnotGetProperties()
の配列を返します。では、そのタイプのオブジェクトをオブジェクトに変換して、カスタムでコレクションに含めるにはどうすればよいでしょうか?PropertyInfo
ProperyDescriptor
PropertyInfo
PropertyDescriptor
PropertyDescriptors