using System;using System.ComponentModel;using System.Drawing;using System.Windows.Forms;namespace AppBasicIDE{/// <summary>/// 控件属性包装器,用于在PropertyGrid中显示和编辑控件属性/// </summary>public class ControlWrapper{private Control _control;private DesignTimeControl _designControl;public ControlWrapper(DesignTimeControl designControl){_designControl = designControl;_control = designControl.InnerControl;}[Category("设计")][Description("控件的名称,用于在脚本中访问控件")][DisplayName("名称")]public string Name{get => _control.Name;set{if (!string.IsNullOrEmpty(value) && value != _control.Name){_control.Name = value;// 触发名称更改事件,让ControlManager更新字典OnPropertyChanged?.Invoke("Name");}}}[Category("布局")][Description("控件在设计面板上的位置")][DisplayName("位置")]public Point Location{get => _designControl.Location;set{_designControl.Location = value;_control.Location = Point.Empty;}}[Category("布局")][Description("控件的大小")][DisplayName("大小")]public Size Size{get => _control.Size;set{_control.Size = value;_designControl.Size = value;}}[Category("外观")][Description("控件显示的文本")][DisplayName("文本")]public string Text{get => _control.Text;set => _control.Text = value;}[Category("外观")][Description("控件的背景颜色")][DisplayName("背景颜色")]public Color BackColor{get => _control.BackColor;set => _control.BackColor = value;}[Category("外观")][Description("控件的前景颜色")][DisplayName("前景颜色")]public Color ForeColor{get => _control.ForeColor;set => _control.ForeColor = value;}[Category("外观")][Description("控件使用的字体")][DisplayName("字体")]public Font Font{get => _control.Font;set => _control.Font = value;}[Category("行为")][Description("控件是否可见")][DisplayName("可见")]public bool Visible{get => _control.Visible;set => _control.Visible = value;}[Category("行为")][Description("控件是否启用")][DisplayName("启用")]public bool Enabled{get => _control.Enabled;set => _control.Enabled = value;}[Category("布局")][Description("控件的锚定方式")][DisplayName("锚定")]public AnchorStyles Anchor{get => _control.Anchor;set => _control.Anchor = value;}[Category("布局")][Description("控件的停靠方式")][DisplayName("停靠")]public DockStyle Dock{get => _control.Dock;set => _control.Dock = value;}// Button 特有属性[Category("外观")][Description("按钮的外观样式")][DisplayName("外观样式")][Browsable(false)] // 默认隐藏,在子类中显示public virtual FlatStyle FlatStyle{get => _control is Button btn ? btn.FlatStyle : FlatStyle.Standard;set { if (_control is Button btn) btn.FlatStyle = value; }}// TextBox 特有属性[Category("行为")][Description("文本框是否为多行")][DisplayName("多行")][Browsable(false)] // 默认隐藏,在子类中显示public virtual bool Multiline{get => _control is TextBox txt ? txt.Multiline : false;set { if (_control is TextBox txt) txt.Multiline = value; }}[Category("行为")][Description("文本框是否只读")][DisplayName("只读")][Browsable(false)] // 默认隐藏,在子类中显示public virtual bool ReadOnly{get => _control is TextBox txt ? txt.ReadOnly : false;set { if (_control is TextBox txt) txt.ReadOnly = value; }}// CheckBox 特有属性[Category("外观")][Description("复选框的选中状态")][DisplayName("选中")][Browsable(false)] // 默认隐藏,在子类中显示public virtual bool Checked{get => _control is CheckBox chk ? chk.Checked : false;set { if (_control is CheckBox chk) chk.Checked = value; }}// 获取控件类型信息[Category("设计")][Description("控件的类型")][DisplayName("控件类型")][ReadOnly(true)]public string ControlType => _control.GetType().Name;public event Action<string> OnPropertyChanged;}/// <summary>/// Button 控件包装器/// </summary>public class ButtonWrapper : ControlWrapper{public ButtonWrapper(DesignTimeControl designControl) : base(designControl) { }[Category("外观")][Description("按钮的外观样式")][DisplayName("外观样式")][Browsable(true)]public override FlatStyle FlatStyle{get => base.FlatStyle;set => base.FlatStyle = value;}}/// <summary>/// TextBox 控件包装器/// </summary>public class TextBoxWrapper : ControlWrapper{public TextBoxWrapper(DesignTimeControl designControl) : base(designControl) { }[Category("行为")][Description("文本框是否为多行")][DisplayName("多行")][Browsable(true)]public override bool Multiline{get => base.Multiline;set => base.Multiline = value;}[Category("行为")][Description("文本框是否只读")][DisplayName("只读")][Browsable(true)]public override bool ReadOnly{get => base.ReadOnly;set => base.ReadOnly = value;}}/// <summary>/// CheckBox 控件包装器/// </summary>public class CheckBoxWrapper : ControlWrapper{public CheckBoxWrapper(DesignTimeControl designControl) : base(designControl) { }[Category("外观")][Description("复选框的选中状态")][DisplayName("选中")][Browsable(true)]public override bool Checked{get => base.Checked;set => base.Checked = value;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。