// 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.Drawing; using System.Windows.Forms; namespace AntdUI { /// /// Popover 气泡卡片 /// /// 弹出气泡式的卡片浮层。 public static class Popover { /// /// Popover 气泡卡片 /// /// 所属控件 /// 标题 /// 内容 /// 箭头方向 public static Form? open(Control control, string title, string content, TAlign ArrowAlign = TAlign.Bottom) { return open(new Config(control, title, content) { ArrowAlign = ArrowAlign }); } /// /// Popover 气泡卡片 /// /// 所属控件 /// 内容 /// 箭头方向 public static Form? open(Control control, string content, TAlign ArrowAlign = TAlign.Bottom) { return open(new Config(control, content) { ArrowAlign = ArrowAlign }); } /// /// Popover 气泡卡片 /// /// 所属控件 /// 标题 /// 控件/内容 /// 箭头方向 public static Form? open(Control control, string title, object content, TAlign ArrowAlign = TAlign.Bottom) { return open(new Config(control, title, content) { ArrowAlign = ArrowAlign }); } /// /// Popover 气泡卡片 /// /// 所属控件 /// 控件/内容 /// 箭头方向 public static Form? open(Control control, object content, TAlign ArrowAlign = TAlign.Bottom) { return open(new Config(control, content) { ArrowAlign = ArrowAlign }); } /// /// Popover 气泡卡片 /// /// 配置 public static Form? open(this Config config) { if (config.Control.IsHandleCreated) { if (config.Control.InvokeRequired) { Form? form = null; config.Control.Invoke(new Action(() => { form = open(config); })); return form; } var popover = new LayeredFormPopover(config); popover.Show(config.Control); return popover; } return null; } /// /// 配置 /// public class Config { /// /// Popover 配置 /// /// 所属控件 /// 标题 /// 内容 public Config(Control control, string title, string content) { Control = control; Title = title; Content = content; } /// /// Popover 配置 /// /// 所属控件 /// 内容 public Config(Control control, string content) { Control = control; Content = content; } /// /// Popover 配置 /// /// 所属控件 /// 控件/内容 public Config(Control control, string title, object content) { Control = control; Title = title; Content = content; } /// /// Popover 配置 /// /// 所属控件 /// 控件/内容 public Config(Control control, object content) { Control = control; Content = content; } /// /// 所属控件 /// public Control Control { get; set; } /// /// 偏移量 /// public object? Offset { get; set; } = null; /// /// 标题 /// public string? Title { get; set; } /// /// 控件/内容 /// public object Content { get; set; } /// /// 字体 /// public Font? Font { get; set; } /// /// 控件显示后回调 /// public Action? OnControlLoad { get; set; } /// /// 自动关闭时间(秒)0等于不关闭 /// public int AutoClose { get; set; } = 0; /// /// 圆角 /// public int Radius { get; set; } = 6; /// /// 箭头大小 /// public float ArrowSize { get; set; } = 8F; /// /// 箭头方向 /// public TAlign ArrowAlign { get; set; } = TAlign.Bottom; /// /// 用户定义数据 /// public object? Tag { get; set; } } /// /// 多列文本 /// public class TextRow { public TextRow(string text) { Text = text; } public TextRow(string text, int gap) { Text = text; Gap = gap; } public TextRow(string text, int gap, Color fore) { Text = text; Gap = gap; Fore = fore; } public TextRow(string text, Color fore) { Text = text; Fore = fore; } /// /// 文字 /// public string Text { get; set; } /// /// 间距 /// public int Gap { get; set; } /// /// 文字颜色 /// public Color? Fore { get; set; } /// /// 字体 /// public Font? Font { get; set; } /// /// 点击回调 /// public Action? Call { get; set; } } } }