// COPYRIGHT (C) Tom. ALL RIGHTS RESERVED. // THE AntdUI PROJECT IS AN WINFORM LIBRARY LICENSED UNDER THE Apache-2.0 License. // LICENSED UNDER THE Apache License, VERSION 2.0 (THE "License") // YOU MAY NOT USE THIS FILE EXCEPT IN COMPLIANCE WITH THE License. // YOU MAY OBTAIN A COPY OF THE LICENSE AT // // http://www.apache.org/licenses/LICENSE-2.0 // // UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, SOFTWARE // DISTRIBUTED UNDER THE LICENSE IS DISTRIBUTED ON AN "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. // SEE THE LICENSE FOR THE SPECIFIC LANGUAGE GOVERNING PERMISSIONS AND // LIMITATIONS UNDER THE License. // GITEE: https://gitee.com/antdui/AntdUI // GITHUB: https://github.com/AntdUI/AntdUI // CSDN: https://blog.csdn.net/v_132 // QQ: 17379620 using System; using System.Windows.Forms; namespace AntdUI { /// /// Drawer 抽屉 /// /// 屏幕边缘滑出的浮层面板。 public static class Drawer { /// /// Drawer 抽屉 /// /// 所属控件 /// 控件 /// 方向 public static Form? open(Form form, Control content, TAlignMini Align = TAlignMini.Right) { return open(new Config(form, content) { Align = Align }); } #region 配置 /// /// Drawer 配置 /// /// 所属控件 /// 控件 /// 方向 public static Config config(Form form, Control content, TAlignMini Align = TAlignMini.Right) { return new Config(form, content) { Align = Align }; } #endregion /// /// Drawer 抽屉 /// /// 配置 public static Form? open(this Config config) { if (config.Form.IsHandleCreated) { if (config.Form.InvokeRequired) { Form? form = null; config.Form.Invoke(new Action(() => { form = open(config); })); return form; } if (config.Mask) { var formMask = new LayeredFormMask(config.Form); formMask.Show(config.Form); var frm = new LayeredFormDrawer(config, formMask); frm.Show(formMask); return frm; } else { var frm = new LayeredFormDrawer(config); frm.Show(config.Form); return frm; } } return null; } /// /// 配置 /// public class Config { /// /// Drawer 配置 /// /// 所属控件 /// 控件 public Config(Form form, Control content) { Form = form; Content = content; } /// /// 所属窗口 /// public Form Form { get; set; } /// /// 控件 /// public Control Content { get; set; } /// /// 是否展示遮罩 /// public bool Mask { get; set; } = true; /// /// 点击蒙层是否允许关闭 /// public bool MaskClosable { get; set; } = true; /// /// 边距 /// public int Padding { get; set; } = 24; /// /// 方向 /// public TAlignMini Align { get; set; } = TAlignMini.Right; /// /// 是否释放 /// public bool Dispose { get; set; } = true; /// /// 用户定义数据 /// public object? Tag { get; set; } /// /// 加载回调 /// public Action? OnLoad { get; set; } /// /// 关闭回调 /// public Action? OnClose { get; set; } } } }