2012-04-23 7 views
1

Windows.Forms.DataGridViewを継承してカスタムDataGridViewを作成しました。また、Windows.Forms.DataGridViewRowを継承してカスタムDataGridViewRowを作成しました。私はMyDataGridViewのRowTemplateとしてMyDataGridViewRowを使用しました。すべてのものがうまくいった。しかし、MyDataGridViewをフォームに追加すると、MyDataGridViewRowに属するフォームデザイナーファイルでプロパティが生成されますが、RowTemplateはDataGridViewRowであるため、ファイルはコンパイルされません。フォームで使用すると、RowTemplateを使用してDataGridViewをカスタマイズするとキャストエラーが発生する

私は手動でエラーを修正するためにRowTemplateをMyDataGridRowにキャストしました。このコードはビジュアルスタジオで自動生成されるため、元の形式に変更されます。フォームの設計者コードの

ここに私の現在のコードスニペットは

public class MyDataGridView : DataGridView, IMyInterface 
{ 
    public string LuName{get; set;} 

    public MyDataGridView() 
    { 
     this.RowTemplate = new MyDataGridViewRow(); 
    } 
    ... 
} 

public class MyDataGridViewRow : DataGridViewRow, IMyInterface2 
{ 
    public string RowName{get; set;} 

    public MyDataGridViewRow() 
    { 

    } 
    ... 
} 

だ部分:

partial class Form4 
{ 
    ... 
    #region Windows Form Designer generated code 
    this.myDataGridView1.RowTemplate.RowName= null; // here's the error generated line 
    #endregion 
    ... 
} 

私はここで間違って何をやっていますか?

答えて

1

私の問題の解決策が見つかりました。

私はMyDataGridViewクラスで

public class MyDataGridView : DataGridView, IMyInterface 
{ 
    public string LuName{get; set;} 

    public MyDataGridView() 
    { 
     this.RowTemplate = new MyDataGridViewRow(); 
    } 

    //Soution is override the RowTemplate Property By MyDataGridViewRow 

    public new MyDataGridViewRow RowTemplate 
    { 
     get 
     { 
      return (MyDataGridViewRow)base.RowTemplate; 
     } 
     set 
     { 
      base.RowTemplate = value; 
     } 
    } 

    ... 
} 
+0

をRowTemplateプロパティをオーバーライドしているあなたとあなたの修正が完璧に働いていたように私は正確に同じような状況にありました!ありがとう! –

関連する問題