Я сейчас пытаюсь добиться чего-то похожего.
Я использую Windows XP SP3 в «классическом» стиле, и после изменения только ширины полосы прокрутки текущего дизайна мое переопределение OnSystemColorsChanged () (в классе, производном от Control) вызывается четыре раза.
Почему четыре раза я не знаю, я подозревал, что это может быть потому, что там есть четыре свойства, которые, кажется, зависят от этого параметра:
SystemInformation.HorizontalScrollBarArrowWidth
SystemInformation.HorizontalScrollBarHeight
SystemInformation.VerticalScrollBarArrowHeight
SystemInformation.VerticalScrollBarWidth
Но все они уже содержат новое значение во время первого вызова. Так что я не уверен на 100%, что здесь происходит. Но похоже, что OnSystemColourChanged () лучше назвать OnSystemInformationChanged ().
Надеюсь, это поможет ...