using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace DPumpHydr.WinFrmUI.WenSkin.Controls
{
[Designer(typeof(WenUserControlDesigner))]
public class WenUserControl : UserControl
{
public WenUserControl()
{
base.SetStyle(
ControlStyles.UserPaint |
ControlStyles.DoubleBuffer |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw |
ControlStyles.SupportsTransparentBackColor, true);
base.UpdateStyles();
BackColor = Color.FromArgb(37, 37, 38);
}
private Color backColor = Color.FromArgb(37, 37, 38);
private Color foreColor = Color.White;
[Category("Wen")]
[Description("用户控件图标")]
[DefaultValue(null)]
public Icon Icon { get; set; }
[Category("Wen")]
[Description("当前用户控件信息")]
[Bindable(true)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[EditorBrowsable(EditorBrowsableState.Always)]
public override string Text { get => base.Text; set => base.Text = value; }
[DefaultValue(typeof(Color), "White"), Category("WenColor"), Description("前景色")]
public override Color ForeColor
{
get => foreColor;
set
{
foreColor = value;
base.ForeColor = value;
this.Invalidate();
}
}
[DefaultValue(typeof(Color), "Transparent"), Category("WenColor"), Description("背景色")]
public override Color BackColor
{
get => this.backColor;
set
{
//若为系统颜色改为酷黑色
if (value == System.Drawing.SystemColors.Control)
{
value = Color.Transparent;
}
base.BackColor = value;
this.backColor = value;
this.Invalidate();
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (Icon == null)
{
Icon = WenSkin.Properties.Resources.logo;
}
}
#region 消息提示框
///
/// 消息
///
///
///
public bool MsgBoxInformation(string text)
{
var m = new MsgBox(text, MsgBox.MsgBoxIcon.Info).ShowDialog();
if (m == DialogResult.OK)
return true;
else
return false;
}
///
/// 提醒
///
///
///
public bool MsgBoxAsterisk(string text)
{
var m = new MsgBox(text, MsgBox.MsgBoxIcon.Asterisk).ShowDialog();
if (m == DialogResult.OK)
return true;
else
return false;
}
///
/// 警告
///
///
///
public bool MsgBoxWarning(string text)
{
var m = new MsgBox(text, MsgBox.MsgBoxIcon.Warning).ShowDialog();
if (m == DialogResult.OK)
return true;
else
return false;
}
///
/// 错误
///
///
///
public bool MsgBoxError(string text)
{
var m = new MsgBox(text, MsgBox.MsgBoxIcon.Error).ShowDialog();
if (m == DialogResult.OK)
return true;
else
return false;
}
#endregion
}
internal class WenUserControlDesigner : ControlDesigner
{
private DesignerActionListCollection designer;
public override DesignerActionListCollection ActionLists
{
get
{
if (designer is null)
{
designer = new DesignerActionListCollection
{
new DesignerActionList(this.Component)
{
AutoShow=true,
}
};
designer.Add(new WenUserControlActionList(this));
}
return designer;
}
}
public override void DoDefaultAction()
{
base.DoDefaultAction();
}
}
internal class WenUserControlActionList : DesignerActionList
{
public WenUserControlActionList(WenUserControlDesigner designer) : base(designer.Component)
{
this._designer = designer;
}
public void Choose()
{
if (Component is WenUserControl control)
{
control.Text = "dddd";
}
}
public WenUserControl WenUserControl => this.Component != null ? this.Component as WenUserControl : null;
public string Text { get => WenUserControl.Text; set => WenUserControl.Text = value; }
public Icon Icon { get => WenUserControl.Icon; set => WenUserControl.Icon = value; }
public override DesignerActionItemCollection GetSortedActionItems()
{
////类型
//DesignerActionPropertyItem designer = new DesignerActionPropertyItem("Icon", "Text");
////linkLalbe
//DesignerActionMethodItem designer2 = new DesignerActionMethodItem(this, "Choose", "fasdf");
////Header
//DesignerActionHeaderItem designer1 = new DesignerActionHeaderItem("dddd");
////Text
//DesignerActionTextItem designer3 = new DesignerActionTextItem("asdf", "Icon");
DesignerActionPropertyItem icon = new DesignerActionPropertyItem("Icon", "图标");
DesignerActionPropertyItem text = new DesignerActionPropertyItem("Text", "文本");
return new DesignerActionItemCollection() { icon, text };
}
private WenUserControlDesigner _designer;
}
}