トップ回答者
デザイン時サポート:DataGridViewのカスタム列の場合

質問
-
DataGridViewのカスタム列に型コンバーターを付与したいと考え、以下のようなコードを作りました。目的は DataGridViewのデザイン時の"列の編集"ダイアログ上のプロパティグリッドの表示内容を動的に操作することです。(例えば表示順の変更)
class MyTextBoxCell : DataGridViewTextBoxCell
{
}[TypeConverter(typeof(MyDgvColumn_TypeConverter))]
public class MyDgvColumn : DataGridViewColumn
{
int var1;
public MyDgvColumn(): base(new MyTextBoxCell()){ }
public int TestProp1
{
get { return var1; }
set { var1 = value; }
}
}internal class MyDgvColumn_TypeConverter : TypeConverter
{
public override bool GetPropertiesSupported(ITypeDescriptorContext context)
{
return true;
}public override PropertyDescriptorCollection GetProperties( ITypeDescriptorContext context,
Object _targetObj,
Attribute[] attributes)
{
MyDgvColumn targetObj = (MyDgvColumn)_targetObj;//<== ①ここで実行時エラー
.......
}
}実行すると、①のところで実行時エラーになります。理由は型が全く違うのでキャストできないとのことです。
デバッガで調べると、_targetObjの型は下記の通りです。これは非公開クラスでありアクセスができません。その中にDataGridViewColumn型のメンバが入ってるようです。
System.Windows.Forms.Design.DataGridViewColumnCollectionDialog.ListBoxItemDataGridViewのカスタム列のデザイン時サポートに関してはインターネット上にも殆ど情報がありません。いかにすればこの問題に対処できるでしょうか? どなたか、お知恵をお借りしたいと思います。よろしくお願いします。