diff --git a/DarkUI/Controls/DarkScrollBar.cs b/DarkUI/Controls/DarkScrollBar.cs
index 4b9ab16..55d5a80 100644
--- a/DarkUI/Controls/DarkScrollBar.cs
+++ b/DarkUI/Controls/DarkScrollBar.cs
@@ -388,16 +388,8 @@ namespace DarkUI.Controls
public void UpdateScrollBar()
{
- if (ViewSize >= Maximum)
- return;
-
var area = ClientRectangle;
- // Cap to maximum value
- var maximumValue = Maximum - ViewSize;
- if (Value > maximumValue)
- Value = maximumValue;
-
// Arrow buttons
if (_scrollOrientation == DarkScrollOrientation.Vertical)
{
@@ -427,7 +419,15 @@ namespace DarkUI.Controls
}
private void UpdateThumb(bool forceRefresh = false)
- {
+ {
+ if (ViewSize >= Maximum)
+ return;
+
+ // Cap to maximum value
+ var maximumValue = Maximum - ViewSize;
+ if (Value > maximumValue)
+ Value = maximumValue;
+
// Calculate size ratio
_viewContentRatio = (float)ViewSize / (float)Maximum;
var viewAreaSize = Maximum - ViewSize;
@@ -493,6 +493,9 @@ namespace DarkUI.Controls
if (_upArrowClicked)
upIcon = ScrollIcons.scrollbar_arrow_clicked;
+ if (!Enabled)
+ upIcon = ScrollIcons.scrollbar_arrow_disabled;
+
if (_scrollOrientation == DarkScrollOrientation.Vertical)
upIcon.RotateFlip(RotateFlipType.RotateNoneFlipY);
else if (_scrollOrientation == DarkScrollOrientation.Horizontal)
@@ -508,6 +511,9 @@ namespace DarkUI.Controls
if (_downArrowClicked)
downIcon = ScrollIcons.scrollbar_arrow_clicked;
+ if (!Enabled)
+ downIcon = ScrollIcons.scrollbar_arrow_disabled;
+
if (_scrollOrientation == DarkScrollOrientation.Horizontal)
downIcon.RotateFlip(RotateFlipType.Rotate270FlipNone);
@@ -516,14 +522,17 @@ namespace DarkUI.Controls
_downArrowArea.Top + (_downArrowArea.Height / 2) - (downIcon.Height / 2));
// Draw thumb
- var scrollColor = _thumbHot ? Colors.GreyHighlight : Colors.GreySelection;
-
- if (_isScrolling)
- scrollColor = Colors.ActiveControl;
-
- using (var b = new SolidBrush(scrollColor))
+ if (Enabled)
{
- g.FillRectangle(b, _thumbArea);
+ var scrollColor = _thumbHot ? Colors.GreyHighlight : Colors.GreySelection;
+
+ if (_isScrolling)
+ scrollColor = Colors.ActiveControl;
+
+ using (var b = new SolidBrush(scrollColor))
+ {
+ g.FillRectangle(b, _thumbArea);
+ }
}
}
diff --git a/DarkUI/Controls/DarkScrollBase.cs b/DarkUI/Controls/DarkScrollBase.cs
index f0d56c1..46426ae 100644
--- a/DarkUI/Controls/DarkScrollBase.cs
+++ b/DarkUI/Controls/DarkScrollBase.cs
@@ -30,6 +30,8 @@ namespace DarkUI.Controls
private int _maxDragChange = 0;
private Timer _dragTimer;
+ private bool _hideScrollBars = true;
+
#endregion
#region Property Region
@@ -88,6 +90,19 @@ namespace DarkUI.Controls
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool IsDragging { get; private set; }
+ [Category("Behavior")]
+ [Description("Determines whether scrollbars will remain visible when disabled.")]
+ [DefaultValue(true)]
+ public bool HideScrollBars
+ {
+ get { return _hideScrollBars; }
+ set
+ {
+ _hideScrollBars = value;
+ UpdateScrollBars();
+ }
+ }
+
#endregion
#region Constructor Region
@@ -159,8 +174,14 @@ namespace DarkUI.Controls
private void SetScrollBarVisibility()
{
- _vScrollBar.Visible = _visibleSize.Height < ContentSize.Height;
- _hScrollBar.Visible = _visibleSize.Width < ContentSize.Width;
+ _vScrollBar.Enabled = _visibleSize.Height < ContentSize.Height;
+ _hScrollBar.Enabled = _visibleSize.Width < ContentSize.Width;
+
+ if (_hideScrollBars)
+ {
+ _vScrollBar.Visible = _vScrollBar.Enabled;
+ _hScrollBar.Visible = _hScrollBar.Enabled;
+ }
}
private void SetVisibleSize()
diff --git a/DarkUI/DarkUI.csproj b/DarkUI/DarkUI.csproj
index 5d274ca..f4fcfc8 100644
--- a/DarkUI/DarkUI.csproj
+++ b/DarkUI/DarkUI.csproj
@@ -309,6 +309,9 @@
+
+
+