238 lines
5.3 KiB
C#
238 lines
5.3 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DevComponents.DotNetBar.Schedule
|
|
{
|
|
public class VScrollPanel : BaseItem
|
|
{
|
|
#region Events
|
|
public event EventHandler<EventArgs> ScrollBarChanged;
|
|
#endregion
|
|
|
|
#region Variables
|
|
|
|
protected CalendarView CalendarView; // CalendarView
|
|
private VScrollBarAdv _ScrollBar; // Scroll bar
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Constructor
|
|
/// </summary>
|
|
/// <param name="calendarView"></param>
|
|
public VScrollPanel(CalendarView calendarView)
|
|
{
|
|
CalendarView = calendarView;
|
|
|
|
SetUpScrollBar();
|
|
}
|
|
|
|
#region Public properties
|
|
|
|
/// <summary>
|
|
/// Gets and sets the panel Bounds
|
|
/// </summary>
|
|
public override Rectangle Bounds
|
|
{
|
|
get { return (base.Bounds); }
|
|
|
|
set
|
|
{
|
|
base.Bounds = value;
|
|
|
|
UpdateScrollBar();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets and sets the control visibility
|
|
/// </summary>
|
|
public override bool Visible
|
|
{
|
|
get { return (base.Visible); }
|
|
|
|
set
|
|
{
|
|
if (base.Visible != value)
|
|
{
|
|
base.Visible = value;
|
|
|
|
ScrollBar.Visible = value;
|
|
|
|
if (value == true)
|
|
ScrollBar.BringToFront();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the scrollBar
|
|
/// </summary>
|
|
public VScrollBarAdv ScrollBar
|
|
{
|
|
get { return (_ScrollBar); }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Private properties
|
|
|
|
/// <summary>
|
|
/// Gets the scrollBar SmallChange value
|
|
/// </summary>
|
|
protected virtual int ScrollPanelSmallChange
|
|
{
|
|
get { return (1); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the scrollBar Maximum value
|
|
/// </summary>
|
|
protected virtual int ScrollPanelMaximum
|
|
{
|
|
get { return (100); }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region SetupScrollBar
|
|
|
|
/// <summary>
|
|
/// Performs scrollBar setup
|
|
/// </summary>
|
|
private void SetUpScrollBar()
|
|
{
|
|
_ScrollBar = new VScrollBarAdv();
|
|
|
|
Control c = (Control)CalendarView.CalendarPanel.GetContainerControl(true);
|
|
|
|
if (c != null)
|
|
c.Controls.Add(_ScrollBar);
|
|
|
|
_ScrollBar.ValueChanged += ValueChanged;
|
|
|
|
UpdateScrollBar();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region UpdateScrollBar
|
|
|
|
/// <summary>
|
|
/// Updates our scrollbar
|
|
/// </summary>
|
|
internal void UpdateScrollBar()
|
|
{
|
|
_ScrollBar.Location = Bounds.Location;
|
|
_ScrollBar.Height = Bounds.Height;
|
|
_ScrollBar.Width = Bounds.Width;
|
|
|
|
_ScrollBar.LargeChange = Bounds.Height;
|
|
_ScrollBar.SmallChange = 1;
|
|
_ScrollBar.SmallChange = ScrollPanelSmallChange;
|
|
_ScrollBar.Maximum = ScrollPanelMaximum;
|
|
|
|
int n = _ScrollBar.Maximum - _ScrollBar.LargeChange + 1;
|
|
|
|
if (n < 0)
|
|
{
|
|
_ScrollBar.Maximum = Bounds.Height;
|
|
_ScrollBar.Value = 0;
|
|
|
|
_ScrollBar.Enabled = false;
|
|
}
|
|
else
|
|
{
|
|
_ScrollBar.Enabled = true;
|
|
|
|
if (_ScrollBar.Value > n)
|
|
_ScrollBar.Value = n;
|
|
else
|
|
Refresh();
|
|
}
|
|
|
|
OnScrollBarUpdate();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DisableScrollBar
|
|
|
|
/// <summary>
|
|
/// Disables the scrollbar
|
|
/// </summary>
|
|
internal void DisableScrollBar()
|
|
{
|
|
_ScrollBar.Location = Bounds.Location;
|
|
_ScrollBar.Height = Bounds.Height;
|
|
|
|
_ScrollBar.LargeChange = Bounds.Height;
|
|
_ScrollBar.SmallChange = 1;
|
|
_ScrollBar.SmallChange = ScrollPanelSmallChange;
|
|
_ScrollBar.Maximum = Bounds.Height;
|
|
|
|
_ScrollBar.Value = 0;
|
|
_ScrollBar.Enabled = false;
|
|
|
|
OnScrollBarUpdate();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ValueChanged
|
|
|
|
/// <param name="sender">object</param>
|
|
/// <param name="e">EventArgs</param>
|
|
void ValueChanged(object sender, EventArgs e)
|
|
{
|
|
OnScrollBarUpdate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Passes the scroll onto others
|
|
/// </summary>
|
|
private void OnScrollBarUpdate()
|
|
{
|
|
if (ScrollBarChanged != null)
|
|
ScrollBarChanged(this, EventArgs.Empty);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IDisposable Members
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (_ScrollBar != null)
|
|
{
|
|
_ScrollBar.ValueChanged -= ValueChanged;
|
|
_ScrollBar.Dispose();
|
|
}
|
|
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Paint
|
|
|
|
public override void Paint(ItemPaintArgs p)
|
|
{
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Copy
|
|
|
|
public override BaseItem Copy()
|
|
{
|
|
return (null);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
#endif
|