196 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| #if FRAMEWORK20
 | |
| using System;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| using System.Drawing;
 | |
| using DevComponents.DotNetBar.ScrollBar;
 | |
| using System.ComponentModel;
 | |
| using DevComponents.DotNetBar.Rendering;
 | |
| using System.Runtime.InteropServices;
 | |
| using System.Reflection;
 | |
| 
 | |
| namespace DevComponents.DotNetBar.Controls
 | |
| {
 | |
|     internal class DGHScrollBar : HScrollBar, ScrollBarReplacement.IScrollBarExtender
 | |
|     {
 | |
|         #region Private Variables
 | |
|         private ScrollBarReplacement m_ScrollBarImpl = null;
 | |
|         private bool m_EnableStyling = true;
 | |
|         #endregion
 | |
| 
 | |
|         #region Constructor
 | |
|         public DGHScrollBar()
 | |
|         {
 | |
|             m_ScrollBarImpl = new ScrollBarReplacement(this);
 | |
| 
 | |
|             this.SetStyle(ControlStyles.UserPaint, true);
 | |
|             this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
 | |
|             this.SetStyle(ControlStyles.Opaque, true);
 | |
|             this.SetStyle(ControlStyles.ResizeRedraw, true);
 | |
|             this.SetStyle(DisplayHelp.DoubleBufferFlag, true);
 | |
|             this.SetStyle(ControlStyles.SupportsTransparentBackColor, false);
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region Internal Implementation
 | |
|         protected override CreateParams CreateParams
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 CreateParams p = base.CreateParams;
 | |
|                 if (m_EnableStyling)
 | |
|                 {
 | |
|                     p.ClassName = null;
 | |
|                     p.Style = 0x2000000;
 | |
|                     p.Style |= 0x44000000;
 | |
|                     if (this.Visible)
 | |
|                         p.Style |= 0x10000000;
 | |
|                     if (!this.Enabled)
 | |
|                         p.Style |= 0x8000000;
 | |
|                     if (this.RightToLeft == RightToLeft.Yes)
 | |
|                     {
 | |
|                         p.ExStyle |= 0x2000;
 | |
|                         p.ExStyle |= 0x1000;
 | |
|                         p.ExStyle |= 0x4000;
 | |
|                     }
 | |
|                 }
 | |
|                 return p;
 | |
|             }
 | |
|         }
 | |
|         protected override void Dispose(bool disposing)
 | |
|         {
 | |
|             m_ScrollBarImpl.Dispose();
 | |
|             base.Dispose(disposing);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets whether custom styling (Office 2007 style) is enabled. Default value is true.
 | |
|         /// </summary>
 | |
|         [Browsable(true), DefaultValue(true), Category("Appearance"), Description("Indicates whether custom styling (Office 2007 style) is enabled.")]
 | |
|         public bool EnableStyling
 | |
|         {
 | |
|             get { return m_EnableStyling; }
 | |
|             set
 | |
|             {
 | |
|                 if (m_EnableStyling != value)
 | |
|                 {
 | |
|                     m_EnableStyling = value;
 | |
|                     if (this.IsHandleCreated)
 | |
|                         this.RecreateHandle();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         ///// <summary>
 | |
|         ///// Gets or sets whether scroll bar appears as application style scroll bar which usually uses darker colors. Default value is true.
 | |
|         ///// </summary>
 | |
|         //[Browsable(true), DefaultValue(true), Category("Appearance"), Description("Indicates whether scroll bar appears as application style scroll bar which usually uses darker colors.")]
 | |
|         //public bool IsAppScrollBarStyle
 | |
|         //{
 | |
|         //    get { return m_ScrollBarImpl.IsAppScrollBarStyle; }
 | |
|         //    set { m_ScrollBarImpl.IsAppScrollBarStyle = value; }
 | |
|         //}
 | |
| 
 | |
|         protected override void OnHandleCreated(EventArgs e)
 | |
|         {
 | |
|             m_ScrollBarImpl.OnHandleCreated();
 | |
|             base.OnHandleCreated(e);
 | |
|         }
 | |
| 
 | |
|         protected override void OnMouseDown(MouseEventArgs e)
 | |
|         {
 | |
|             if (m_EnableStyling)
 | |
|                 m_ScrollBarImpl.OnMouseDown(e);
 | |
|             base.OnMouseDown(e);
 | |
|         }
 | |
| 
 | |
|         protected override void OnMouseUp(MouseEventArgs e)
 | |
|         {
 | |
|             if (m_EnableStyling)
 | |
|                 m_ScrollBarImpl.OnMouseUp(e);
 | |
|             base.OnMouseUp(e);
 | |
|         }
 | |
| 
 | |
|         protected override void OnMouseEnter(EventArgs e)
 | |
|         {
 | |
|             if (m_EnableStyling)
 | |
|                 m_ScrollBarImpl.OnMouseEnter(e);
 | |
|             base.OnMouseEnter(e);
 | |
|         }
 | |
| 
 | |
|         protected override void OnMouseLeave(EventArgs e)
 | |
|         {
 | |
|             if (m_EnableStyling)
 | |
|                 m_ScrollBarImpl.OnMouseLeave(e);
 | |
|             base.OnMouseLeave(e);
 | |
|         }
 | |
| 
 | |
|         protected override void OnMouseMove(MouseEventArgs e)
 | |
|         {
 | |
|             if (m_EnableStyling)
 | |
|                 m_ScrollBarImpl.OnMouseMove(e);
 | |
|             base.OnMouseMove(e);
 | |
|         }
 | |
| 
 | |
|         protected override void OnPaint(PaintEventArgs e)
 | |
|         {
 | |
|             if(m_EnableStyling)
 | |
|                 m_ScrollBarImpl.OnPaint(e);
 | |
|             base.OnPaint(e);
 | |
|         }
 | |
| 
 | |
|         protected override void NotifyInvalidate(Rectangle invalidatedArea)
 | |
|         {
 | |
|             if (m_EnableStyling)
 | |
|                 m_ScrollBarImpl.NotifyInvalidate(invalidatedArea);
 | |
|             base.NotifyInvalidate(invalidatedArea);
 | |
|         }
 | |
| 
 | |
|         public void UpdateScrollValues()
 | |
|         {
 | |
|             m_ScrollBarImpl.UpdateScrollValues();
 | |
|         }
 | |
| 
 | |
|         protected override void OnParentChanged(EventArgs e)
 | |
|         {
 | |
|             if (this.Parent is DataGridView)
 | |
|             {
 | |
|                 m_ScrollBarImpl.ScrollBarCore.SideBorderOnly = true;
 | |
|                 m_ScrollBarImpl.ScrollBarCore.HasBorder = false;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 m_ScrollBarImpl.ScrollBarCore.SideBorderOnly = false;
 | |
|                 m_ScrollBarImpl.ScrollBarCore.HasBorder = true;
 | |
|             }
 | |
|             base.OnParentChanged(e);
 | |
|         }
 | |
| 
 | |
|         protected override void OnResize(EventArgs e)
 | |
|         {
 | |
|             base.OnResize(e);
 | |
|             UpdateScrollValues();
 | |
|         }
 | |
| 
 | |
|         public bool AppStyleScrollBar
 | |
|         {
 | |
|             get { return m_ScrollBarImpl.AppStyleScrollBar; }
 | |
|             set { m_ScrollBarImpl.AppStyleScrollBar = value; }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region IScrollBarExtender Members
 | |
|         void ScrollBarReplacement.IScrollBarExtender.SetValue(int newValue, ScrollEventType type)
 | |
|         {
 | |
|             if (newValue != this.Value)
 | |
|             {
 | |
|                 int v = this.Value;
 | |
|                 this.Value = newValue;
 | |
|                 ScrollEventArgs se = new ScrollEventArgs(type, v, newValue, ScrollOrientation.HorizontalScroll);
 | |
|                 OnScroll(se);
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
|     }
 | |
| }
 | |
| #endif |