// 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; }
}
}
}