'宣言 Protected Overrides Sub InitAppearance( _ ByRef appearance As AppearanceData, _ ByRef requestedProps As AppearancePropFlags _ )
protected override void InitAppearance( ref AppearanceData appearance, ref AppearancePropFlags requestedProps )
ProgressBarFillUIElement で Infragistics.Win.AppearanceBase 情報を解決するための情報のメインソースは、IProgressBarInfo.FillAppearance です。
ProgressBarUIElement、Infragistics.Win.AppearanceBase.FontData、Infragistics.Win.AppearanceBase.TextTrimming、 Infragistics.Win.AppearanceBase.TextHAlign、および Infragistics.Win.AppearanceBase.TextVAlign プロパティは FillAppearance に優先きないため、子 ProgressFillTextUIElement は、TextElement の子として配置されなければなりません。代わりに IProgressBarInfo.Appearance の解決された値が使用されます。
Imports Infragistics.Win Private mouseEnteredElement As Boolean = False Private mouseHoveringOnElement As Boolean = False Protected Overrides Sub InitAppearance(ByRef appearance As AppearanceData, ByRef requestedProps As AppearancePropFlags) MyBase.InitAppearance(appearance, requestedProps) ' マウスが要素の上にあるかどうかに基づいて BackColor を ' 設定します If (Me.mouseHoveringOnElement) Then appearance.BackColor = Color.Green ElseIf (Me.mouseEnteredElement) Then appearance.BackColor = Color.Red Else appearance.BackColor = Color.Transparent End If End Sub Protected Overrides Sub OnMouseEnter() Me.mouseEnteredElement = True ' UIElement の子を (色変更などのために) 再描画する必要がある場合に呼び出します If Not Me.IsDrawing then Me.Invalidate() End If End Sub Protected Overrides Sub OnMouseHover() Me.mouseHoveringOnElement = True ' UIElement の子を位置変更またはサイズ変更する必要がある場合に呼び出します Me.DirtyChildElements() End Sub Protected Overrides Sub OnMouseLeave() Me.mouseHoveringOnElement = False Me.mouseEnteredElement = False If Not Me.IsDrawing then Me.Invalidate() End If End Sub Protected Overrides ReadOnly Property WantsMouseHoverNotification() As Boolean Get Return True End Get End Property
using Infragistics.Win; private bool mouseEnteredElement = false; private bool mouseHoveringOnElement = false; protected override void OnMouseHover() { this.mouseHoveringOnElement = true; // UIElement の子を位置変更またはサイズ変更する必要がある場合に呼び出します this.DirtyChildElements(); } protected override bool WantsMouseHoverNotification { get { return true; } } protected override void OnMouseEnter() { this.mouseEnteredElement = true; // UIElement の子を (色変更などのために) 再描画する必要がある場合に呼び出します if (!this.IsDrawing) this.Invalidate(); } protected override void OnMouseLeave() { this.mouseHoveringOnElement = false; this.mouseEnteredElement = false; // UIElement の子を (色変更などのために) 再描画する必要がある場合に呼び出します if (!this.IsDrawing) this.Invalidate(); } protected override void InitAppearance(ref AppearanceData appearance, ref AppearancePropFlags requestedProps) { base.InitAppearance(ref appearance, ref requestedProps); // マウスが要素の上にあるかどうかに基づいて BackColor を // 設定します if(this.mouseHoveringOnElement) appearance.BackColor = Color.Green; else if(this.mouseEnteredElement) appearance.BackColor = Color.Red; else appearance.BackColor = Color.Transparent ; }