問題タブ [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.
winforms - Editor / EditorAttribute を実行時に (動的に) オブジェクトのプロパティに追加する
実行時にオブジェクトのプロパティに EditorAttribute (Editor) を追加する方法は?
私はMy.Settings.ExcludeFiles
、設定デザイナーによって として作成されたを持っていますPublic Property ExcludedFiles() As Global.System.Collections.Specialized.StringCollection
。プロパティ グリッドを介して編集する場合ExcludedFiles
、"String Collection Editor" は "Constructor on type 'System.String' not found" 実行時例外を生成します。
プロパティの属性はExcludeFiles
、次に設定を変更したときに上書きされるため、変更できません。したがって、実行時に Editor/EditorAttribute をアタッチ/追加する必要があります。
私がやりたいのはStringCollectionEditor
、以下に示すように、実行時にデザイン時の属性として追加することです。
ソリューション
方法 1
この属性を追加する必要があるのは、アプリケーションの初期化など、1 回だけです。
方法 2
より柔軟に。以下の Nicolas Cadilhac の回答を、実行時に (動的に) Editor / EditorAttribute をオブジェクトのプロパティに追加する で参照してください。派生した CustomTypeDescriptor および TypeDescriptionProvider クラスを使用します。アプリケーションの初期化など、プロバイダーを追加する必要があるのは 1 回だけです。
c# - ココアのプロパティグリッド
Cocoaで.NETPropertyGridクラスに似たものが見つからなかったので、自分のバージョンを書き始めました。実行時の情報を使用して、オブジェクトのプロパティを取得します。
そしてこれはNSTableViewで値を取得/設定するためのものです:
更新を同期するにreflectedObject
は、基本的なKVOを使用します。
この解決策は機能しますが、修正する必要のある2つの問題があります。
- どういうわけか.NET属性をシミュレートする必要があるので、プロパティに適切なエディターを選択できます。テキストボックスは、すべての状況に適しているわけではありません。
- 行ごとに異なるセルエディタ。ブールチェックボックス、文字列テキストボックスなど。
私はまだココアの初心者なので、本当に基本的なことを求めているのなら申し訳ありません。
更新:次のようなものが必要です(Xcode-> Get Info-> Buildからの画像):
PropertyGridCocoa http://www.adorior.cz/Images/PropertyGridCocoa.png
c# - C# PropertyGrid: プロパティの変更が機能しない?
World
クラスに次のようなプロパティがあります。
「重力を得る!」PropertyGrid
が値を読み取ろうとすると文字列が期待どおりに表示されますが、重力ベクトルを変更してEnterキーを押しても何も起こりません。なぜだめですか?
私Vec2
のクラスにはプロパティがあります:
次のおかげで、グリッドに表示されます。
これら 2 つのメソッドを に追加したところ、Vec2Converter
動作するようになりました。
文字列表現と個々のプロパティの両方を変更することで機能します。なぜthixは個々のプロパティの場合にそれを修正するのですか??
答えは構造体だと思うので、ベクトルを返すときに値で渡し、実際のベクトルではなくコピーが変更されます。Vec2
World
Gravity
Gravity
CanConvertFrom
解決策は、メソッドとメソッドをそのままにしておくことだと思いますConvertFrom
。重力ベクトルの文字列表現を変更し、実際の重力ベクトルを更新するため、それらが機能すると思います。それ、またはVec2
クラスの作成は機能するはずですが、アプリが構造体であることに大きく依存しているため、今は実際にテストすることはできません。
c# - propertygrid の TypeConverter は文字列からのみ変換し、文字列には変換しません
プロパティ グリッドにアクセスするときに、ConvertTo メソッドだけが (何度も) 呼び出されます。これは正しく「Foo!」を返します。プロパティ グリッドの文字列。クリックして編集すると、例外が発生しますCannot convert object of type Foo to type System.String.
(正確には翻訳されていません)。ConvertFrom メソッドが呼び出されません。その理由は何ですか? エラーは、文字列からではなく、文字列に変換しようとしていることを示しています。
このオブジェクトを編集したいときは、Foo から文字列に変換し、編集が終わったら元に戻す必要があると思います。
StringConverter クラス:
アクセス中のプロパティ:
c# - クラスのリストの C# プロパティ
Visual Studio のデザイナーでプロパティ グリッドを使用しようとしています。
ユーザーが追加機能にアクセスできるように、開発者が設計時に追加できるクラスのリストがあります。
これは、私がすでにコードに持っているもののサンプルコードです。問題は、開発者がデザイン モードに移行すると、リストに x 個の値しか表示されず、詳細が表示されないことです。リストに新しい項目を追加しようとすると、ユーザーにエラーが表示されます。
タイプ 'EditorTextBox+SyntaxRegex' のコンストラクターが見つかりません。
今コード:
c# - GenericItems を含む PropertyGrid GenericList
抽象ジェネリック クラスから派生したオブジェクトの PropertyGrid (およびその CollectionEditor) の値を表示および編集する方法はありますか? 「IFilter´1」または「BaseFilter'1」 IFilter はインターフェイスであり、BaseFilter は抽象クラスです。
このリストに含まれるすべてのオブジェクト:
IFilter を実装する抽象クラスが 1 つあります。
そして、FilterBase のいくつかの特殊な実装
このような「SimpleBool」クラスを上記の定義済みリストに追加すると、PropertyGrid にプロパティが表示されません。しかし、非ジェネリック タイプでジェネリック リストを定義すると、すべて正しく表示されます。
この作業を行うためのソリューションはありますか? TypeConverter と独自の CollectionEditor を追加しようとしました。明らかに運がない =(
c# - PropertyGrid コレクションをリストに制限する方法
さて、PropertyGrid とコレクションの使用に関するいくつかの質問を読みました。しかし、どのように/どのように機能するかを理解するのに苦労[TypeConverter]
しています。私は MSDN が公開している小さな宣伝文句を読みましたが、率直に言って、この貧弱で独学のプログラマーには少し欠けています。
だから、ここに私が持っているものがあります。最初のコレクション:
コレクション内のオブジェクト:
ModuleData オブジェクトと BatchData オブジェクトの両方を記述する項目を含む ListView コントロールがあります。ListView から BatchData 項目を選択すると、予想どおり、PropertyGrid にコレクション エディターが表示されます。コレクション エディターを、ListView コントロールにリストされている ModuleData 項目のみに制限する方法はありますか? 理想的には、(ListView からの) BatchData アイテムを BatchData コレクションに追加したくありません。特に、コレクションは BatchData オブジェクト タイプに対して「型指定」されていないためです。
さらにコード サンプルが必要な場合は、スニペットを編集して喜んで差し上げます。
わかりやすくするために、ModuleData は、指定されたアセンブリ内のクラスをインスタンス化するために必要なデータを保持するカスタム クラスです。含まれているのは、フィールドとパブリック/内部プロパティだけです。私がやりたいことは、プロパティ グリッド コントロールでアセンブルされたコレクション エディターを使用して、ModuleData オブジェクトを BatchDataModule
コレクションに追加することです。追加できる ModuleData オブジェクトは、ListView コントロールに一覧表示されます。
編集:: List<ModuleData>
継承を削除しました。
更新: カスタム コレクション エディターを作成する場合、それは独自のカスタム フォーム/ダイアログを作成することを意味しますか? 次に、基本的に、UITypeEditor の属性と継承を通じて、カスタム コレクション ダイアログを表示するための情報をプロパティ グリッドに提供しますか?
c# - PropertyGrid コントロールの水平分割線をプログラムで調整するにはどうすればよいですか?
C# プロジェクトで .NET PropertyGrid コントロールを使用しています。
グリッドを含むフォームが読み込まれると、水平スプリッター (説明から設定を分割する) がデフォルトの位置になります。C# でそのスプリッターの位置をプログラムで変更するにはどうすればよいですか?
c# - System.Data.Rows を PropertyGrid にバインドするための Marc Gravell の RowWrapperDescriptor について
Matt によって投稿された問題に対するMarc Gravellのエレガントで機知に富んだ解決策(タイトル「C#/winforms: プロパティグリッドと System.Data.DataRow を最適にバインドする方法」) に出会い、私のアプリケーションの 1 つで同じ解決策を使用しました。 .
Marc のコードからの抜粋を使用します。
私はどういうわけかこれを DataGridView で機能させることができました。DataGridView はテーブルをソースとして使用しますが、DataGridView の行をクリックすると、(Marc の RowWrapper を使用して) propertyGrid1 の SelectedObject として設定され、完全に機能します。なぜこれを行うのか、つまり DataGridView と PropertyGrid の両方を使用するのかと尋ねるかもしれません。事実は、ビジネス要件と偏狭な管理ポリシーです。
とにかく、私は今別のジレンマを抱えています。テーブルの列の 1 つ、たとえば "Foo" など (PropertyGrid ではフィールドの 1 つとして表示されます) は、PropertyGrid のドロップダウン リストのようなものである必要があります。つまり、「Foo」は、別の DataTable から派生した項目のリストを含むコンボボックスでなければなりません。また、各フィールド項目に何らかの説明を含める方法はありますか?
これはできますか?Marc Gravell は、「この領域で他のことを行って、一部のプロパティを編集不可 (IsReadOnly) にしたり、別のキャプション (DisplayName)、またはカテゴリ (Category) にしたりすることができることに注意してください - RowWrapperDescriptor の他のメンバーをオーバーライドすることによって」 . "彼の投稿の最後のメモとして、私はこれを行う方法があるのだろうかと思っていました.
理論的なアドバイスは大歓迎です。どうもありがとう。