C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 継承したDataGridViewの規定列を変え


(過去ログ 67 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■38959 / inTopicNo.1)  継承したDataGridViewの規定列を変えたい
  
□投稿者/ きゃむ (3回)-(2009/07/28(Tue) 11:00:20)

分類:[C#] 

お世話になっております。
環境はVISUAL C# 2008 Express Editionです。


現在、DataGridViewを継承したコントロール(MyDataGridViewとする)を作成してまして、
その中でカスタムセルとカスタム列(それぞれ、MyDataGridViewCell、MyDataGridViewColumnとする)を使用しています。

このMyDataGridViewをデザイナでフォームに配置してMyDataGridViewColumnを追加する場合、デザイナの
MyDataGridViewタスクの「列の追加」画面から行っているのですが、
このとき「非バインド列」の「型」に表示される列がデフォルトではDataGridViewTextBoxColumnになっています。
デザイナ上からデータソースを選択してバインドさせた場合も、デフォルトでDataGridViewTextBoxColumnが作成されます。
この、DataGridViewTextBoxColumnがデフォルトになるというのは、どこかで指定されているのでしょうか。
そしてそれは変更可能なのでしょうか。デザイナの仕様ってことはないとは思うのですが。。。

やりたいことは、デザイナ上で列の追加を選ぶときや、データセットにバインドさせたときに作成される列が
デフォルトでMyDataGridViewColumnとなるようにしたいのです。
単に開発上の不便さを解消したいだけで、これができないと前に進めないというわけではないのですが、
調べても出てこなかったため質問させて頂きました。宜しくお願い致します。
引用返信 編集キー/
■38987 / inTopicNo.2)  Re[1]: 継承したDataGridViewの規定列を変えたい
□投稿者/ gtk2k (34回)-(2009/07/28(Tue) 16:52:36)
残念ながら仕様みたいです。
調べてみると列の追加において、DataGridViewAddColumnDialog(System.Design.dll内)というダイアログを呼び出しており、
このダイアログのPopulateColumnTypesComboというプライベートメソッドをフォームロード時に実行しています。
PopulateColumnTypesComboにおいて、ベタに
Me.columnTypesCombo.SelectedIndex = Me.TypeToSelectedIndex(GetType(DataGridViewTextBoxColumn))
を行っております。
このダイアログはFriendとして作成されているため、継承してその部分だけ書き換えるといったことができず、
関連するあらゆるクラスなどを自作する羽目になるため非常にめんどくさいことになると思われますので、
あきらめて仕様に従ったほうがいいと思います。



引用返信 編集キー/
■38990 / inTopicNo.3)  Re[2]: 継承したDataGridViewの規定列を変え
□投稿者/ きゃむ (4回)-(2009/07/28(Tue) 18:47:04)
2009/07/28(Tue) 18:48:34 編集(投稿者)

No38987 (gtk2k さん) に返信
> 残念ながら仕様みたいです。
> このダイアログはFriendとして作成されているため、継承してその部分だけ書き換えるといったことができず、
> 関連するあらゆるクラスなどを自作する羽目になるため非常にめんどくさいことになると思われますので、
> あきらめて仕様に従ったほうがいいと思います。

大変参考になりました。
無駄な努力をせずに済みました。gtk2kさん、どうもありがとうございます!!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -