「winforms」アプリケーションで、C#3.5の「DataGridView」に取り組んでいます。
カスタム列は「MaskTextColumn」です。Mask、「PromptChar」などのカスタムプロパティがあります。
「MaskTextColumn」のクローンを作成しているときに、顧客のプロパティが新しいオブジェクトにコピーされないので、カスタムプロパティ値を使用してそのままクローンを作成したいと思います。
「winforms」アプリケーションで、C#3.5の「DataGridView」に取り組んでいます。
カスタム列は「MaskTextColumn」です。Mask、「PromptChar」などのカスタムプロパティがあります。
「MaskTextColumn」のクローンを作成しているときに、顧客のプロパティが新しいオブジェクトにコピーされないので、カスタムプロパティ値を使用してそのままクローンを作成したいと思います。
カスタムプロパティを含めるには、cloneメソッドをオーバーライドする必要があります。このリンクが述べているように、
クローンをオーバーライドするときは、派生クラスに追加されたプロパティの値も必ずコピーしてください。
コードは次のようになります。
public override Object Clone()
{
object clonedObject = base.Clone();
MaskTextColumn clonedColumn = clonedObject as MaskTextColumn;
clonedColumn.PromptChar = this.PromptChar;
// .. more property settings here
return clonedColumn;
}
カスタム派生クラスのCloneメソッドをオーバーライドする必要があります。
このようなもの:
public override object Clone()
{
var clonedColumn = base.Clone() as CustomColumn;
clonedColumn.CustomProp = this.CustomProp;
return clonedColumn;
}