/// <summary> /// Create a new <c>PSPanelPropertyChangeArgs</c> with the specified /// property enumeration value /// </summary> /// <param name="property"></param> public PSPanelPropertyChangeEventArgs(PSPanelProperties property) { this.psPanelProperty = property ; }
/// <summary> /// Preprocessor for <see cref="PropertyChange"/> events /// </summary> /// <param name="psPanelProperty">The property that changed</param> /// <remarks> /// Look at each property change and invalidate cached GDI+ objects /// as necessary. /// </remarks> protected virtual void OnPropertyChange(PSPanelProperties psPanelProperty) { switch(psPanelProperty) { case PSPanelProperties.HorzAlignmentProperty: case PSPanelProperties.VertAlignmentProperty: MeasureTextFormat = null ; DrawTextFormat = null ; break ; case PSPanelProperties.TextColorsProperty: FontBrush = null ; break ; case PSPanelProperties.TextHighlightColorsProperty: FontHighlightBrush = null ; break ; case PSPanelProperties.CaptionGradientProperty: case PSPanelProperties.CaptionGradientModeProperty: case PSPanelProperties.GradientOffsetProperty: case PSPanelProperties.CaptionCornerTypeProperty: CaptionBrush = null ; break ; case PSPanelProperties.FontProperty: DisabledFont = null ; isLayoutDirty = true ; break ; case PSPanelProperties.CaptionProperty: case PSPanelProperties.SpacingProperty: case PSPanelProperties.CurveRadiusProperty: case PSPanelProperties.FitToImageProperty: case PSPanelProperties.PSPanelStyleProperty: case PSPanelProperties.PanelHeightProperty: isLayoutDirty = true ; break ; case PSPanelProperties.CaptionUnderlineProperty: CaptionUnderlinePen = null ; // this may not be necessary, but its hard to tell without more logic isLayoutDirty = true ; break ; case PSPanelProperties.PanelGradientProperty: case PSPanelProperties.PanelGradientModeProperty: PanelBrush = null ; break ; case PSPanelProperties.IsFixedHeightProperty: if (IsFixedHeight) { PanelState = PSPanelState.Expanded ; } break ; case PSPanelProperties.PanelStateProperty: case PSPanelProperties.ExpandedGlyphsProperty: case PSPanelProperties.CollapsedGlyphsProperty: break ; case PSPanelProperties.EnabledProperty: CaptionBrush = null ; PanelBrush = null ; CaptionUnderlinePen = null ; break ; case PSPanelProperties.DisabledOpacityProperty: if (!Enabled) { Invalidate() ; } break ; } // forward the event to listeners if (propertyChangeListeners != null) { propertyChangeListeners(this,new PSPanelPropertyChangeEventArgs(psPanelProperty)) ; } // invalidate the control Invalidate() ; }