using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using LYFZ.WinAPI; namespace LYFZ.ComponentLibrary { /// /// 无边框四边阴影基窗体 /// public partial class BaseShadowForm : BaseMotherForm { ShadowLayer layer = null; bool _isShadow = true; /// /// 是否开启四边阴影 /// [DescriptionAttribute("是否开启四边阴影"), CategoryAttribute("自定义窗体属性"), DefaultValueAttribute(typeof(bool), "true")] public bool IsShadow { get { return _isShadow; } set { _isShadow = value; } } Rectangle _layerRel = new Rectangle(5,5,10,12); /// /// 在开启阴影效果时设置阴影位置和大小 /// [DescriptionAttribute("在开启阴影效果时设置阴影位置和大小"), CategoryAttribute("自定义窗体属性")] public Rectangle LayerRel { get { return _layerRel; } set { _layerRel = value; } } public BaseShadowForm() { InitializeComponent(); } //Show或Hide被调用时 protected override void OnVisibleChanged(EventArgs e) { if (Visible) { //启用窗口淡入淡出 if (!DesignMode) { //淡入特效 // Win32.AnimateWindow(this.Handle, 150, Win32.AW_BLEND | Win32.AW_ACTIVATE); } //判断不是在设计器中 if (!DesignMode && layer == null) { if (IsShadow) { layer = new ShadowLayer(this); layer.Difference_X = LayerRel.X; layer.Difference_Y = LayerRel.Y; layer.Difference_Width = LayerRel.Width; layer.Difference_Height = LayerRel.Height; if (this.IsReion && this.Width == 780 && this.Height == 580) { layer.Difference_X = 19; layer.Difference_Y = 27; layer.Difference_Width = 38; layer.Difference_Height = 46; layer.SetInit(); } layer.Show(this); } } base.OnVisibleChanged(e); } else { base.OnVisibleChanged(e); // Win32.AnimateWindow(this.Handle, 150, Win32.AW_BLEND | Win32.AW_HIDE); } } //窗体关闭时 protected override void OnClosing(CancelEventArgs e) { base.OnClosing(e); //先关闭阴影窗体 if (layer != null) { layer.Close(); layer.Dispose(); } //在Form_FormClosing中添加代码实现窗体的淡出 // Win32.AnimateWindow(this.Handle, 150, Win32.AW_BLEND | Win32.AW_HIDE); } } }