You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

175 lines
4.6 KiB

#if NETFX || NETCORE
using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Drawing;
namespace Apewer.Surface
{
/// <summary>基本控件。</summary>
public class BaseControl : UserControl
{
#region this
/// <summary>组件。</summary>
protected IContainer _components = null;
/// <summary>释放资源。</summary>
public new void Dispose()
{
if (!_disposed)
{
base.Dispose();
_disposed = true;
}
}
/// <summary>释放资源。</summary>
protected override void Dispose(bool disposing)
{
if (disposing && (_components != null)) _components.Dispose();
base.Dispose(disposing);
}
/// <summary>初始化组件。</summary>
protected void InitializeComponent()
{
_components = new Container();
this.AutoScaleMode = AutoScaleMode.None;
this.Font = DefaultFont;
this.Size = new Size(300, 300);
this.VerticalScroll.SmallChange = 20;
this.VerticalScroll.LargeChange = 40;
//this.BackColor = System.Drawing.Color.White;
//this.MouseWheel += event_caption_mousewheel;
//this.MouseMove += event_caption_mousemove;
}
/// <summary>构造函数。</summary>
public BaseControl()
{
Optimization = true;
this.VerticalScroll.SmallChange = 10;
this.VerticalScroll.LargeChange = 20;
this.HorizontalScroll.SmallChange = 10;
this.HorizontalScroll.LargeChange = 20;
this.MouseWheel += Event_Caption_MouseWheel;
this.MouseMove += Event_Caption_MouseMove;
this.HandleCreated += Event_HandleCreated;
this.HandleDestroyed += Event_HandleDestroyed;
}
#endregion
#region variable
private int _index = 0;
private string _key = "";
private bool _locked = false;
private bool _basecreated = false;
private bool _disposed = false;
#endregion
#region accessor
/// <summary>界面线程调用器。</summary>
protected delegate void Invoker();
/// <summary>已改变锁定属性。</summary>
public event EventHandler LockedChanged;
/// <summary>索引。</summary>
public virtual int Index
{
get { return _index; }
set { _index = value; }
}
/// <summary>标识。</summary>
public virtual string Key
{
get { return _key; }
set { _key = string.IsNullOrEmpty(value) ? "" : value; }
}
/// <summary>锁定。</summary>
public virtual bool Locked
{
get { return _locked; }
set
{
bool vold = _locked;
_locked = value;
if ((vold != value) && (LockedChanged != null)) LockedChanged(this, new EventArgs());
}
}
/// <summary>基对象已创建。</summary>
public bool BaseCreated
{
get { return _basecreated; }
private set { _basecreated = value; }
}
/// <summary>鼠标滚轮事件。</summary>
public void WheelMouse(MouseEventArgs e)
{
OnMouseWheel(e);
}
/// <summary>启用优化。</summary>
protected virtual bool Optimization
{
set
{
SetStyle(ControlStyles.UserPaint, value);
SetStyle(ControlStyles.AllPaintingInWmPaint, value);
SetStyle(ControlStyles.OptimizedDoubleBuffer, value);
// SetStyle(ControlStyles.ResizeRedraw, value);
SetStyle(ControlStyles.DoubleBuffer, value);
UpdateStyles();
}
}
#endregion
#region event
private void Event_Caption_MouseMove(object sender, MouseEventArgs e)
{
// if (AutoScroll) Focus();
}
private void Event_Caption_MouseWheel(object sender, MouseEventArgs e)
{
if (AutoScroll)
{
//Refresh();
//Invalidate();
//Update();
}
}
private void Event_HandleDestroyed(object sender, EventArgs e)
{
BaseCreated = false;
}
private void Event_HandleCreated(object sender, EventArgs e)
{
BaseCreated = true;
}
#endregion
}
}
#endif