DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Point配列をプロパティグリッドに表示する場合

環境/言語:[VB2008 .NET Framework3.5]
分類:[.NET]

ユーザコントロールに

    Public Property Points() As Point()
        Get
            Return _Points
        End Get
        Set(ByVal value As Point())
            _Points = value
        End Set
    End Property

といったプロパティを作成しました。

このコントロールをフォームに追加し、プロパティグリッド上で見た場合
Point[]配列
と表示され、[...]ボタンにて編集画面が表示されるのですが、
この編集画面のプロパティグリッドのXとYが

「オブジェクトがターゲットの型と一致しません」

と表示され、編集することができません。
プロパティグリッドでは項目の展開もでき、編集もできます。

[...]を押したときに表示される画面にて編集できるようにする
もしくはプロパティグリッドに[...]ボタンを表示しないようにする
(この時、+シンボルにて展開でき、編集できる)にはどうすれば
よろしいでしょうか?
動作確認してませんがプロパティの前に下記を追加してみてください
<TypeConverterAttribute(GetType(System.Drawing.PointConverter))>
■No30019に返信(Miraさんの記事)
> 動作確認してませんがプロパティの前に下記を追加してみてください
> <TypeConverterAttribute(GetType(System.Drawing.PointConverter))>

試してみましたが、プロパティグリッド内の表示がPoint配列ではなく
Point型に変換されて表示されるため、プロパティグリッド内の表示も
正常ではなくなりました。
Point配列をPoint型にコンバートすることになるので、当然だとは思いますが・・・

TypeConverter指定前の表示

  - Point[]配列
      - [0] 0, 0
        X   0
        Y   0
      - [1] 10, 10
        X   10
        Y   10

TypeConverter指定後の表示

   - System.Drawing.Point[]    
       X   オブジェクトがターゲットの型と一致しません。
       Y   オブジェクトがターゲットの型と一致しません。


前の投稿だと、分かりにくかったかもしれませんが、
プロパティグリッドの表示は正しいんです。
プロパティグリッドから、ボタンを押した時の編集画面(たぶんSystem.ComponentModel.Design.ArrayEditor)
の表示が、今回書いたTypeConverter指定後の表示と同じような表示になってしまうので
正常に表示できるようにするか、もしくは編集画面を表示できないようにしたいのです。

DOBON.NET | プログラミング道 | プログラミング掲示板