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