- PR -

独自で作成したDataGridColumnStyleをデザイナから追加できるようにするには?

1
投稿者投稿内容
yokota
会議室デビュー日: 2006/05/01
投稿数: 6
投稿日時: 2006-05-01 16:33
お世話になります。yokotaと申します。


現在、DataGridを拡張したコントロールを作成しており、その中で独自で作成した複数のDataGridColumnStyleをデザイナから追加できるようにしたいのですが、その方法を見つけることができません。

実現したいことを端的に申し上げると、

「『DataGridColumnStyle コレクション エディタ』に独自のDataGridColumnStyleを追加できるようにしたい。」

もしくは

「独自のコレクションを作成し、コレクションエディタで複数の種類のオブジェクトを追加できるようにしたい。」

ということなのですが・・・。


コレクションエディタについては宇宙仮面さんのコレクションエディタに関する記事(参照元URL)を参考にさせて頂いたのですが、これを拡張して複数の型をコレクションエディタにて指定できるように・・・というところで詰まってしまいました。


もし詳しい方がおりましたらご教示お願いいたします。


開発環境:Visual C#.NET - .NET Framework 1.1
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-05-01 17:18
System.Drawing.Design.UITypeEditorを継承してコレクションエディタを自作すれば可能かと思います。
System.Drawing.Design.UITypeEditorクラスのEditValueメソッドをオーバーライドしてそこから、自作したUIをShowDialogする感じです。

拡張したDataGridの該当するプロパティには下記のような属性を付加します。
[Editor(typeof(EditorType), typeof(BaseEditorType))]

EditorTypeには自作したコレクションエディタの型を指定します。
yokota
会議室デビュー日: 2006/05/01
投稿数: 6
投稿日時: 2006-05-01 21:20
burton999さん、ありがとうございます。


なるほど、コレクションエディタの自作ですか。

恥ずかしながらUITypeEditorクラスに関する知識に乏しいので、これを参考に試してみようと思います。


まずは取り急ぎお礼まで。
dotnetmemo
常連さん
会議室デビュー日: 2006/04/29
投稿数: 24
投稿日時: 2006-05-02 21:11
以下のサンプルが参考にできると思います。

Extending the DataGrid using CodeDom
http://www.microsoft.com/belux/msdn/nl/community/columns/jtielens/datagrid.mspx

ここでの例では、DataGridTableStyleとDataGridを継承で拡張しています。

ではでは
yokota
会議室デビュー日: 2006/05/01
投稿数: 6
投稿日時: 2006-05-02 22:16
dotnetmemoさん、ありがとうございました。

提示されたサンプルがそのものズバリでした。


コード:
private class TestCollectionEditor: CollectionEditor
{
	protected override Type[] CreateNewItemTypes()
	{
		return new Type[] 
		{
			typeof(ObjectA),
			typeof(ObjectB),
			typeof(ObjectC)
		};
	}

	public TestCollectionEditor(Type type): base(type)
	{
		//コンストラクタ
	}
}




このような感じにCollectionEditorクラスを継承して、CreateNewItemTypeメソッドをオーバーライドしたら思ったとおりの動作をしました。


burton999さん、dotnetmemoさんありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)