📄 elementsmanager.cs
字号:
namespace Imps.Client.Pc
{
using System;
using System.Drawing;
using System.Windows.Forms;
public class ElementsManager
{
private ElementControls _controls = new ElementControls();
private Element _last_mouseon_element;
private EForm _owner;
public Element _rearrange_element;
private bool _visible = true;
public ElementsManager(EForm form)
{
this._owner = form;
}
public void Dispose()
{
foreach (Element element in this._controls)
{
element._style.Dispose();
element.Dispose();
}
}
public bool MouseOnElement(System.Drawing.Point pt)
{
foreach (Element element in this._controls)
{
if ((element.Visible && element.HandleMouse) && PointInRect(pt, element.Rectangle))
{
return true;
}
}
return false;
}
public void OnMouseClick(MouseEventArgs e)
{
foreach (Element element in this._controls)
{
if (element.Visible && element.HandleMouse)
{
PointInRect(new System.Drawing.Point(e.X, e.Y), element.Rectangle);
}
}
}
public void OnMouseDown(MouseEventArgs e)
{
Element element = null;
foreach (Element element2 in this._controls)
{
if ((element2.Visible && element2.HandleMouse) && PointInRect(new System.Drawing.Point(e.X, e.Y), element2.Rectangle))
{
element = element2;
}
}
if (element != null)
{
element.OnMouseDown(e);
}
if (this._rearrange_element != null)
{
this.Controls.Remove(this._rearrange_element);
this.Controls.Add(this._rearrange_element);
this._rearrange_element = null;
}
}
public void OnMouseLeave(MouseEventArgs e)
{
foreach (Element element in this._controls)
{
if ((element.HandleMouse && element.Visible) && (this._last_mouseon_element == element))
{
element.OnMouseLeave(e);
}
}
}
public void OnMouseMove(MouseEventArgs e)
{
Element element = null;
Element element2 = null;
foreach (Element element3 in this.Controls)
{
if (!element3.Visible || !element3.HandleMouse)
{
continue;
}
if (PointInRect(new System.Drawing.Point(e.X, e.Y), element3.Rectangle))
{
element = element3;
continue;
}
if (this._last_mouseon_element == element3)
{
element2 = element3;
}
}
if (((element != null) && (this._last_mouseon_element != element)) && (element2 == null))
{
element2 = this._last_mouseon_element;
}
if (element2 != null)
{
element2.OnMouseLeave(e);
this._owner.Cursor = Cursors.Default;
this._owner.toolTip.Active = false;
}
if ((element != null) && (this._last_mouseon_element != element))
{
element.OnMouseHover(e);
ElementButton button = element as ElementButton;
if (((button != null) && (button.Style.Cursor != null)) && (button.State != ElementButton.ButtonState.STATE_DISABLE))
{
this._owner.Cursor = button.Style.Cursor;
}
if (button != null)
{
this._owner.toolTip.Active = true;
this._owner.toolTip.SetToolTip(this._owner, button._tooltip);
}
}
this._last_mouseon_element = element;
}
public void OnMouseUp(MouseEventArgs e)
{
Element element = null;
foreach (Element element2 in this._controls)
{
if (!element2.HandleMouse || !element2.Visible)
{
continue;
}
if (PointInRect(new System.Drawing.Point(e.X, e.Y), element2.Rectangle))
{
element = element2;
continue;
}
element2.OnMouseUp(e);
}
if (element != null)
{
element.OnMouseUp(e);
}
}
public void OnPaint(PaintEventArgs e)
{
foreach (Element element in this._controls)
{
if (element.Visible)
{
element.OnPaint(e);
}
}
}
public void OnSizeChanged(int w, int h)
{
foreach (Element element in this._controls)
{
element.OnSizeChanged(w, h);
}
}
public static bool PointInRect(System.Drawing.Point pt, Rectangle rect)
{
return (((pt.X >= rect.Left) && (pt.X <= rect.Right)) && ((pt.Y >= rect.Top) && (pt.Y <= rect.Bottom)));
}
public void RearrangeElement(Element e)
{
if (e != null)
{
this.Controls.Remove(e);
this.Controls.Add(e);
}
}
public void StyleDispose()
{
foreach (Element element in this._controls)
{
element._style.Dispose();
}
}
public ElementControls Controls
{
get
{
return this._controls;
}
}
public bool Visible
{
get
{
return this._visible;
}
set
{
if (this._visible != value)
{
this._owner.Invalidate();
}
this._visible = value;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -