3

この問題があります。独自のdatagridviewcolumnを作成しました。デザイン時の編集で変更できるいくつかのプロパティを追加したいのですが、コードは次のとおりです。

private int nMaxLength;
[Description("Fondoscala valore"), Category("Sea")]
public int MaxLength
{
    get { return nMaxLength; }
    set { nMaxLength = value; }
}

実際、列エディターを開くと、このプロパティがSeaカテゴリの下に表示され、変更できますが、変更すると、.Designer.csファイルに移動すると、MaxLength値が0になります。 ..変更なし...何が問題なの?? 前もって感謝します

4

1 に答える 1

8

Forms Designerは、設計時に列タイプ(fromDataGridViewTextBoxColumnからなど)を変更できるようにするために、いくつかの内部トリックを実行します。DataGridViewButtonColumnこの結果、デザイナはDataGridViewColumn、正しく実装されたメソッドを持つサブクラスに依存しますClone()。つまり、次のようになります。

public override object Clone() {
    MyDataGridViewColumn that = (MyDataGridViewColumn)base.Clone();
    that.MaxLength = this.MaxLength;
    return that;
}

メソッドをオーバーライドしない場合Clone()、デザイナーはカスタムプロパティ値に加えた変更をコミットしません。

于 2010-09-16T15:04:40.163 に答える