- - PR -
継承フォーム元で定義された DataGridView のプロパティが変更できない
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-06-15 08:53
Visual Studio 2005(C#2.0)にて、親フォームにて、DataGridView を定義し、Modifier を protected にします。
子フォームを親フォームを継承して作成すると、DataGridView が画面に現れますが、DataGridView のいかなるプロパティも変更できません。 Modifier が private であればこの現象は理解できますが、protected であればプロパティの変更はできるはずですよね?(事実、ボタンなどのほかのコントロールのプロパティは変更できます) どなたか解決方法のわかる方、教えて下さい。 [ メッセージ編集済み 編集者: Shin 編集日時 2006-06-15 09:00 ] | ||||
|
投稿日時: 2006-06-15 09:17
こちらと同じ内容でしょうか。
[VB2005] DataGridView を貼った Form を継承できない # 継承 + DataGridView で検索しました。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-06-15 09:29
じゃんぬねっとさん、お返事ありがとうございます。
フィードバックを追ってみましたが、デザイナでは無理でコードで処理しないといけないようですね。。。 フォームを作るプログラマ達に楽をしてもらうように親フォームを作っていたのですが、子フォームの方でデザイナが使えず、楽どころか面倒になってしまうのでは本末転倒ですね。ちょっと考え直すことにします。ありがとうございました。 | ||||
|
投稿日時: 2006-06-15 10:22
自己レスです。
子フォームでグリッドのデザインができないのは厳しいので、以下の方法で対応しました。 ・親フォームに DataGridView の型だけを定義 この型に対し共通の処理を行うメソッド・イベントを親フォームに定義 ・親フォームに InitializeDataGridView(DataGridView) メソッドを作成 このメソッドは子フォームの Load イベントで呼び出される。 引数には子フォームの DataGridView が渡され、 親フォームに定義された DataGridView の型から参照させる。 また、親フォームに定義されたイベントを DataGridView に追加する。 ・子フォームを作成するプログラマは DataGridView のデザインとデータソースを設定し、InitializeDataGridView() に自分の DataGridView を引数として渡し呼び出す とりあえずこれで問題なくいけそうですが、何か無駄な事をしている用な気がします。お気づきの点がありましたらご助言ください。 [ メッセージ編集済み 編集者: Shin 編集日時 2006-06-15 10:25 ] | ||||
|
投稿日時: 2006-06-15 10:26
なんとなく DataGrid のカスタムコントロールを作成して
それを使ってもらったほうが良いような気がします。 | ||||
|
投稿日時: 2006-06-16 03:21
かるあさん、コメントありがとうございます。
カスタムコントロール作成し、子フォームに設置する方法を検討してみましたが、イベントに関してはカスタムグリッドに追加できたのですが、親フォームからグリッドを使用して呼ばれる処理は子フォームのグリッドを親が知っていなくては実現できず、かといって親フォームにカスタムグリッドを付けてしまっては子フォームではグリッドをデザインできず、問題は残りました。 ですのでカスタムコントロールはやめ、とりあえず前述の方法で進めてみようと思っています。 | ||||
|
投稿日時: 2006-06-16 09:36
ですので、小フォームにそのカスタム型の参照を返すだけの Interface を実装してはどうでしょうか? 'カスタム コントロールの型' で戻り値を指定しておけば、コンパイル解決できます。 親フォームからは、子フォームがその Interface を実装しているかで判断できます。 # と、こういう意味ではないですか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-06-16 10:04
子フォームのカスタムコントロールの参照を親フォームに渡すのは駄目なんでしょうか? |