148 lines
3.7 KiB
C#
148 lines
3.7 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.Editors
|
|
{
|
|
public class VisualToggleButton : VisualItem
|
|
{
|
|
#region Private Variables
|
|
|
|
#endregion
|
|
|
|
#region Events
|
|
/// <summary>
|
|
/// Occurs when Checked property has changed.
|
|
/// </summary>
|
|
public event EventHandler CheckedChanged;
|
|
#endregion
|
|
|
|
#region Constructor
|
|
/// <summary>
|
|
/// Initializes a new instance of the VisualToggleButton class.
|
|
/// </summary>
|
|
public VisualToggleButton()
|
|
{
|
|
this.Focusable = true;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
|
|
{
|
|
if (e.Button == System.Windows.Forms.MouseButtons.Left && GetIsEnabled())
|
|
{
|
|
ToggleChecked();
|
|
IsMouseDown = true;
|
|
}
|
|
base.OnMouseDown(e);
|
|
}
|
|
|
|
protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
|
|
{
|
|
if (e.Button == System.Windows.Forms.MouseButtons.Left)
|
|
IsMouseDown = false;
|
|
base.OnMouseUp(e);
|
|
}
|
|
|
|
protected override void OnMouseEnter()
|
|
{
|
|
this.IsMouseOver = true;
|
|
base.OnMouseEnter();
|
|
}
|
|
|
|
protected override void OnMouseLeave()
|
|
{
|
|
this.IsMouseOver = false;
|
|
base.OnMouseLeave();
|
|
}
|
|
|
|
protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
|
|
{
|
|
if (e.KeyCode == System.Windows.Forms.Keys.Space && GetIsEnabled())
|
|
{
|
|
ToggleChecked();
|
|
e.Handled = true;
|
|
}
|
|
base.OnKeyDown(e);
|
|
}
|
|
|
|
private void ToggleChecked()
|
|
{
|
|
this.Checked = !this.Checked;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the CheckedChanged event.
|
|
/// </summary>
|
|
protected virtual void OnCheckedChanged(EventArgs e)
|
|
{
|
|
if (CheckedChanged != null)
|
|
CheckedChanged(this, e);
|
|
}
|
|
|
|
private bool _Checked = false;
|
|
/// <summary>
|
|
/// Gets or sets whether item is checked.
|
|
/// </summary>
|
|
[DefaultValue(false)]
|
|
public virtual bool Checked
|
|
{
|
|
get { return _Checked; }
|
|
set
|
|
{
|
|
if (_Checked != value)
|
|
{
|
|
_Checked = value;
|
|
InvalidateRender();
|
|
OnCheckedChanged(new EventArgs());
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool _IsMouseDown;
|
|
/// <summary>
|
|
/// Gets whether left mouse button is pressed over the item.
|
|
/// </summary>
|
|
[Browsable(false)]
|
|
public bool IsMouseDown
|
|
{
|
|
get { return _IsMouseDown; }
|
|
internal set
|
|
{
|
|
if (value != _IsMouseDown)
|
|
{
|
|
_IsMouseDown = value;
|
|
this.InvalidateRender();
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool _IsMouseOver = false;
|
|
/// <summary>
|
|
/// Gets whether mouse is over the item.
|
|
/// </summary>
|
|
[Browsable(false)]
|
|
public bool IsMouseOver
|
|
{
|
|
get { return _IsMouseOver; }
|
|
internal set
|
|
{
|
|
if (value != _IsMouseOver)
|
|
{
|
|
_IsMouseOver = value;
|
|
this.InvalidateRender();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|
|
#endif
|
|
|