■
- カスタム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; } }