#region using System; using System.ComponentModel; using System.Data; using System.Drawing.Design; using System.Windows.Forms; using DevExpress.XtraEditors; #endregion namespace CSFrameworkV5.Library.UserControls { /// /// 编号-标题自定义控件. /// public partial class ucValueEdit : UserControl { private DataTable _ItemsData; private string[] _ItemsValue = { }; private string _Seperator = "-"; public ucValueEdit() { InitializeComponent(); _ItemsData = new DataTable(); _ItemsData.Columns.Add("Value", typeof(string)); _ItemsData.Columns.Add("Name", typeof(string)); _InnerLookUpEdit.Properties.DisplayMember = "Name"; _InnerLookUpEdit.Properties.ValueMember = "Value"; _InnerLookUpEdit.Properties.DataSource = _ItemsData; } [Category("Appearance")] [Description("嵌套的LookUpEdit控件")] public LookUpEdit InnerLookupEdit => _InnerLookUpEdit; [DesignerSerializationVisibility( DesignerSerializationVisibility.Content)] [Editor("System.Windows.Forms.Design.StringArrayEditor, System.Design", typeof(UITypeEditor))] [Category("Appearance")] [Description("自定义数据列表.如: A - 类型A ")] public string[] Items { get => _ItemsValue; set => SetItems(value); } [DefaultValue("-")] [Description("值与显示名称中间的分隔符.如:A - 类型A")] public string ItemValueSeperator { get => _Seperator; set => _Seperator = value; } private void RefreshDataSource() { _InnerLookUpEdit.Properties.DataSource = null; _InnerLookUpEdit.Properties.DataSource = _ItemsData; } /// /// 将String[]转换为DataTable /// /// private void SetItems(string[] values) { _ItemsValue = values; _ItemsData.Rows.Clear(); if (values.Length == 0) return; string[] P; foreach (var item in values) { var V = ""; var N = ""; if (item.Trim() != "") { P = item.Split(char.Parse(_Seperator)); V = P.Length >= 1 ? P[0] : ""; N = P.Length == 2 ? P[1] : ""; } _ItemsData.Rows.Add(V, N); } RefreshDataSource(); } private void ucValueEdit_Load(object sender, EventArgs e) { SetItems(_ItemsValue); } private void ucValueEdit_SizeChanged(object sender, EventArgs e) { _InnerLookUpEdit.Width = Width; Height = _InnerLookUpEdit.Height; } } }