1

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

エラーを修正するために、手動で RowTemplate を MyDataGridRow にキャストしました。ただし、このコードは Visual Studio によって自動生成されるため、元の形式に変更されます。

ここに私の現在のコードスニペットがあります

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
    ...
}

ここで何が間違っていますか?

4

1 に答える 1

1

私の問題の解決策を見つけました。

MyDataGridView クラスの RowTemplate プロパティをオーバーライドしました

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;
        }
    }

    ...
}
于 2012-04-24T08:44:30.100 に答える