■
- カスタムControlで、デフォルトFontやBackColor/ForeColorを変更すると、そのままではVSのデザイナがシリアライズしてしまい、ちょっと問題がある。そのためAmbientValueとかいじるのかとか思っていたけど、結局は以下のような感じにする(Fontを変更した場合)。つまり、VSデザイナがリフレクションで、ShouldSerialize(プロパティ名) メソッドを探して、見つかれば、それを元にデフォルト値かどうかをチェックしているのだ。
[EditorBrowsable(EditorBrowsableState.Never)]
internal bool ShouldSerializeFont()
{
if (useSystemFont)
return false;
else
return base.Font != Control.DefaultFont;
}
}