1


0

プロパティグリッド、.net、winformsでのカスタム読み取り専用コレクションの編集の問題

COLによると、ObjectModel.Collectionから派生したカスタムコレクションがあります。

タイプCOLのプロパティが読み取りおよび書き込み対応の場合に正常に動作する独自のコレクションエディターがあります。 ただし、プロパティをReadOnlyに変更すると、エディターを開くボタンがプロパティグリッドに表示されなくなります。

テストとして、カスタムエディターをCollectionEditorでオーバーライドしましたが、正常に機能しました。

だから、私の質問は、Collection Editorが合格するが、コレクションエディタが失敗するというプロパティグリッドの作成は何ですか?

UITypeEditorでオーバーライドすることはあまりないので、CollectionEditorに関してハードコーディングが行われているのではないかと心配しています。

乾杯。

ETA:

以下の質問に答えました。

2 Answer


0


私はそれが表示されなかった理由を見つけました、そしてそれはPropertyGridのバグのようです。 EditStyleがModalに設定されている場合、ボタンは表示されますが、DropDownに設定されている場合は表示されません。

スタイルは…​、まあ、スタイルのためだけのものだと思っていただろうか?

リフレクタを見ると、スタイルがモーダルに設定されている場合にのみ読み取り専用プロパティの追加チェック(参照タイプであるかどうかの確認、ボタンの有効化など)が発生するため、問題が発生します。 うーん、いいね。


0


あなたがあなた自身の答えで説明する振る舞いはバグではなく、設計によるものであり、率直に言って非常に論理的だと思います。 ドロップダウンエディターを見てください:ユーザーに選択を提供するため、結果はプロパティの新しい値になります(ColorEditor、AnchorEditor、DockEditor、CursorEditorなどを参照)。 そのため、プロパティは読み取り専用であってはなりません。 モーダルエディターは値(通常は参照型)を編集するためのものであるため、プロパティが読み取り専用であっても使用できます。 もちろん、これを使用して新しい値を選択することもできます(たとえば、FileNameEditorなど)。

したがって、答えは「UIデザインを確認する」ことでしょう。 参照タイプのコンテンツを編集するには、ドロップダウンエディターを使用する必要がありますか?