none
基底Formクラス上にDataGridViewを配置した場合、protectedでも派生クラスのデザイナでpropatyが操作出来ない RRS feed

  • 質問

  • 質問させて下さい。

    [現象]
    C#(VisualStudio2010/Framework4.0)で基底Formクラスを作成し、
    その基底Formクラス上にDataGridView(もしくはそれを継承したコントロール)を配置した場合、
    派生Formクラスをデザイナで開いてもプロパティ値が変更出来ない。
    ※基底Formクラス上でDataGridViewのスコープをprotectedやpublicにしても出る現象です。
      プロパティが変更出来ないので、コントロールの位置やサイズも変更出来ない。

    [調査]
    色々調査した結果、.NET Framework2.0から続く現象の様です。
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31339&forum=7

    [対応]
    対応についてですが、DataGridViewを継承したコントロール(弊社標準部品におけるDataGridViewEx)の
    デザイン時属性を書き換える方法を取ろうと思っています。
    =>デザイナでの描画時にDataGridViewではなく、単純なコントロールと認識させて当該の現象を回避する。
    ※デザイナ上でDataGridViewにデータをバインドする等が効かなくなるのは想定内ですが、他の影響が未検証。

    実装内容:DataGridViewExのクラス宣言時に下記の1行を追記する
    [Designer(typeof(System.Windows.Forms.Design.ControlDesigner))]
    public partial class DataGridViewEx : System.Windows.Forms.DataGridView

    これ以外に、
    1.当該の現象を受容する。(コード上でサイズ変更や位置変更を行う。)
    2.ユーザコントロールを作成してその中にDataGridViewを持たせる。(ハンドラを公開する等が手間)
    が思い浮かんだのですが、他にもっと良さそうな対応案などございますでしょうか?

    以上、よろしくお願い致します。

    2014年8月6日 9:57